复制(6)——分发者(Distributor)
如简介中提到,分发者(Distributor)是SQLServer 复制过程的核心组件。因为它是控制和执行实际的数据移动的过程,并且存放了发布(Publications)和订阅(Subscriptions)信息的地方(实际上就是系统库的Distribution数据库中)。
术语
发布(Publication)、分发(Distribution)、订阅(Subscription)是复制(replication)的专用术语,并不用于数据库对象或者数据库。你可能会看到“一个表是发布中的一部分”,但是表完全可以独立于复制。另外,复制也有专用的引擎(agent)和作业(jobs)。
分发数据库(Distribution)
当分发配置成功后,在当前实例的【系统数据库】文件夹下就会出现一个新的数据库,叫Distribution,如图1:

图1
如果分发是配置在一个单独的实例上,可以有多个分发数据库,每个发布者对应一个分发库。这个库包含了所有发布和项目(articles)的元数据,如果复制类型为事务复制,也会把所有需要被复制的命令存放在里面,包含所有需要重新执行的命令。这个数据库可能会变得很大,所以要监控磁盘空间。
快照文件夹(Snapshot Folder):
快照文件夹用于在快照复制中,保持被复制表的快照,每次快照复制运行时,一个被复制的表(或者其他对象)的快照就会被保存在快照文件夹中。这个过程是使用SQLServer的BCP工具实现的。快照文件夹可以是分发者的本地文件夹或者网络中的共享文件夹。用于执行快照引擎(snapshot agent)的windows 帐号必须对这个文件夹具有写权限。其他引擎的帐号必须对快照文件夹最少有读的权限。快照文件夹主要用于快照复制。但是其他类型的复制同样会使用快照来初始化同步过程。
引擎(Agents):
整个复制过程并不是由SQLServer自己执行的,而是包含一系列的复制引擎。标准配置中,这些过程是有SQLServer agent的jobs来实现。但是并不是必须的,因为这些引擎是独立的,可以使用命令行来执行。如果是pull订阅,所有引擎都在分发服务器。每个的pull订阅会单独执行自己的分发引擎。用于从分发者中提取数据。
最佳实践:
通常情况下,复制运行在本地分发模式下,所有的分发都活动在发布者上,并且容易使用,但是会对发布服务器产生影响,如果分发压力已经影响了性能,最好可以考虑分到独立的服务器。使其对发布者最小化影响。
移除复制:
步骤1:拆分分发者到独立的服务器:
使用复制(2)——事务复制实操中的环境,我们现在来移除已有的复制,最简单的移除是连到SSMS,然后右键【复制】文件夹,选择生成脚本,如图2:
图2
步骤2:点开之后,可以看到有一个发布源【AdventureWorks2008R2】,现在我们选择删除这个组件并把脚本存到一个新页面,如图3:

图3
如果你的环境有多个SQLServer实例,需要重复这一步直到全部发布卸载为止。然后执行脚本,让SQLServer自己卸载复制功能。
配置分发:
我们创建一个新的虚拟机来做独立的分发服务器,简单配置一下即可。这里服务器叫做Demo。在TestServer2中连到Demo服务器,然后右键【复制】文件夹,选择【配置分发】:

和前面配置事务复制的步骤类似,只是这里使用独立的服务器,所以配置分发的时候要看清楚,我们使用Demo作为分发服务器:

创建快照文件夹:
我们在F盘F:\SnapShots创建一个快照文件夹,配置参考事务复制的配置,这里使用Distribution1作为新数据库名:




配置发布:
现在返回发布数据库,也就是TestServer2,选择配置分发,这里选择Demo服务器作为分发服务器:




至此,对分发者的配置完成。但是对分发的讨论还会继续,具体在后续的篇章中会提及。
复制(6)——分发者(Distributor)的更多相关文章
- mysql 5.6并行复制事件分发机制
并行复制相关线程 在MySQL 5.6并行复制中,当设置set global slave_parallel_workers=2时,共有4个复制相关的线程,如下: +----+------------- ...
- 第二篇 Replication:分发服务器的作用
本篇文章是SQL Server Replication系列的第二篇,详细内容请参考原文. 分发服务器是SQL Server复制的核心组件.分发服务器控制并执行数据从一个服务器移动到另一个服务器的进程. ...
- 复制(5)——事务复制中的发布者(Publisher)
发布者是所有被复制(replicated)的数据的集合.每个发布者可以有多个发布(publication),每个发布项包含多个项目(articles),但是这些发布必须处于一个单一的数据库中,而每个项 ...
- 【译】第二篇 Replication:分发服务器的作用
本篇文章是SQL Server Replication系列的第二篇,详细内容请参考原文. 分发服务器是SQL Server复制的核心组件.分发服务器控制并执行数据从一个服务器移动到另一个服务器的进程. ...
- SQL Server中的高可用性(3)----复制
在本系列文章的前两篇对高可用性的意义和单实例下的高可用性做了阐述.但是当随着数据量的增长,以及对RTO和RPO要求的严格,单实例已经无法满足HA/DR方面的要求,因此需要做多实例的高可用性.本 ...
- SQLServer复制(二)--事务代理作业
之前的一篇已经介绍了如何配置复制,介绍了发布者.分发者和订阅者以及事务日志运行的简单关系.其中提到了复制代理,我们这篇将详细介绍复制代理,它是什么?在事务复制的步骤中起到了什么作用? 代理和工作 首先 ...
- 数据库大数据处理---复制(SQLServer)
复制? 复制起初并不是用于作为高可用性功能而设计的,实际上复制的概念就像其名称一样,用于复制数据.比如将某个库中的数据“复制”到另一个库,到另一个实例中,由OLTP复制到OLAP环境中,由某数据中心复 ...
- SQL Server复制情况下的高可用方案(一)镜像+复制
数据库镜像可以与事务复制一起使用实现数据库整体的高可用性和高性能,其中镜像可以提供故障检测和故障转移,复制则用于实现读写分离. 数据库镜像涉及一个数据库的两个副本,这两个副本通常驻留在不同的计算机上. ...
- SQL Server提高事务复制效率优化(四)修改数据同步过程优化
1.原理 我说的数据修改同步过程指的是在快照生成完毕,分发代理将快照应用于订阅服务器完成订阅服务器初始化后,发布服务器后续的更改同步到订阅服务器过程,这也就是我们常常关注的延迟.此过程主要 ...
- sql server 本地复制订阅 实现数据库服务器 读写分离(转载)
转载地址:http://www.cnblogs.com/echosong/p/3603270.html 再前段echosong 写了一遍关于mysql 数据同步实现业务读写分离的文章,今天咱们来看下S ...
随机推荐
- C#之任务,线程和同步
1 概述 对于所有需要等待 的操作,例 如 ,因 为文件 . 数据库或网络访 问都需要一定 的时间,此 时就可以启 动一个新线程,同时完成其他任务,即使是处理密集型的任务,线程也是有帮助的. 2 Pa ...
- php(LAMP)开发环境配置相关问题及解决办法
相信很多像我一样初次接触到php开发的人,在配置基本的开发环境时都是一头雾水,为此小编特写下自己在安装配置php开发环境过程中遇到的一些问题,及解决办法. 1.LAMP组合,安装centons+apa ...
- STM32串口乱码
库函数默认8MHz晶振,应根据实际硬件选择 # CMSIS/stm32f10x.h #define HSE_VALUE ((uint32_t)12000000) #if !defined HSE_VA ...
- 飘逸的python - __new__、__init__、__call__傻傻分不清
__new__: 对象的创建,是一个静态方法.第一个參数是cls.(想想也是,不可能是self,对象还没创建,哪来的self) __init__ : 对象的初始化, 是一个实例方法,第一个參数是sel ...
- ecshop 调用其他数据库中的商品
ecshop中修改includes/cls_ecshop.php中第53行 function table($str) { /* if($str=='goods'){ return '`ecshop3' ...
- Java 理论与实践: 处理 InterruptedException(转)
很多 Java™ 语言方法,例如 Thread.sleep() 和 Object.wait(),都可以抛出InterruptedException.您不能忽略这个异常,因为它是一个检查异常(check ...
- (step7.2.2)hdu 2161(Primes——判断是否是素数)
题目大意:输入一个n,判断您是否是素数.. 解题思路:简单数论 代码如下: /* * 2161_1.cpp * * Created on: 2013年8月31日 * Author: Administr ...
- boost事件处理
尽管这个库的名字乍一看好象有点误导,但实际上并不是如此. Boost.Signals 所实现的模式被命名为 '信号至插槽' (signal to slot).它基于下面概念:当相应的信号被发出时.相关 ...
- 开源 自由 java CMS - FreeCMS1.8 网上申报
项目地址:http://code.google.com/p/freecms/ 在线申报 1. 转交申报 用户能够把申报转交给其它人办理,系统会记录此申报的转交记录. 注意:同一时候仅仅能转交一个申报. ...
- easyui LinkButton
http://www.zi-han.net/case/easyui/menu&button.html