如简介中提到,分发者(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)的更多相关文章

  1. mysql 5.6并行复制事件分发机制

    并行复制相关线程 在MySQL 5.6并行复制中,当设置set global slave_parallel_workers=2时,共有4个复制相关的线程,如下: +----+------------- ...

  2. 第二篇 Replication:分发服务器的作用

    本篇文章是SQL Server Replication系列的第二篇,详细内容请参考原文. 分发服务器是SQL Server复制的核心组件.分发服务器控制并执行数据从一个服务器移动到另一个服务器的进程. ...

  3. 复制(5)——事务复制中的发布者(Publisher)

    发布者是所有被复制(replicated)的数据的集合.每个发布者可以有多个发布(publication),每个发布项包含多个项目(articles),但是这些发布必须处于一个单一的数据库中,而每个项 ...

  4. 【译】第二篇 Replication:分发服务器的作用

    本篇文章是SQL Server Replication系列的第二篇,详细内容请参考原文. 分发服务器是SQL Server复制的核心组件.分发服务器控制并执行数据从一个服务器移动到另一个服务器的进程. ...

  5. SQL Server中的高可用性(3)----复制

        在本系列文章的前两篇对高可用性的意义和单实例下的高可用性做了阐述.但是当随着数据量的增长,以及对RTO和RPO要求的严格,单实例已经无法满足HA/DR方面的要求,因此需要做多实例的高可用性.本 ...

  6. SQLServer复制(二)--事务代理作业

    之前的一篇已经介绍了如何配置复制,介绍了发布者.分发者和订阅者以及事务日志运行的简单关系.其中提到了复制代理,我们这篇将详细介绍复制代理,它是什么?在事务复制的步骤中起到了什么作用? 代理和工作 首先 ...

  7. 数据库大数据处理---复制(SQLServer)

    复制? 复制起初并不是用于作为高可用性功能而设计的,实际上复制的概念就像其名称一样,用于复制数据.比如将某个库中的数据“复制”到另一个库,到另一个实例中,由OLTP复制到OLAP环境中,由某数据中心复 ...

  8. SQL Server复制情况下的高可用方案(一)镜像+复制

    数据库镜像可以与事务复制一起使用实现数据库整体的高可用性和高性能,其中镜像可以提供故障检测和故障转移,复制则用于实现读写分离. 数据库镜像涉及一个数据库的两个副本,这两个副本通常驻留在不同的计算机上. ...

  9. SQL Server提高事务复制效率优化(四)修改数据同步过程优化

    1.原理       我说的数据修改同步过程指的是在快照生成完毕,分发代理将快照应用于订阅服务器完成订阅服务器初始化后,发布服务器后续的更改同步到订阅服务器过程,这也就是我们常常关注的延迟.此过程主要 ...

  10. sql server 本地复制订阅 实现数据库服务器 读写分离(转载)

    转载地址:http://www.cnblogs.com/echosong/p/3603270.html 再前段echosong 写了一遍关于mysql 数据同步实现业务读写分离的文章,今天咱们来看下S ...

随机推荐

  1. Android学习十九:ContentProvider初步

    一.Content Provider基本概念 1.ContentProvider为存储和获取数据提供了统一的接口.ContentProvide对数据进行封装.不用关心数据存储的细节.使用表的形式来组织 ...

  2. 强势围观,CSDN代码引用bug

    看我写的一篇blog  http://blog.csdn.net/laijieyao/article/details/41014355,在代码上引用了微软雅黑的字体,结果代码显示出来把我给惊呆了 竟然 ...

  3. 每天一个JavaScript实例-html5拖拽

    <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content ...

  4. 关于AIX VG中 LV 的状态问题,LV STATE

    在数据库管理过程中常常遇见LV状态异常,而造成LV不能再次被使用的情况,那么AIX中LV的两种状态分别代表什么呢 如果是访问fs需要open,即创建文件系统并mount 文件系统LV STATE 才是 ...

  5. excel删除问号~?~

    1.直接替换(菜单)编辑——替换——查找内容——(输入)~?~——替换为(空,就是什么都不输入)——全部替换.2.设原数据在A列,从A1开始,若得到的数值数据需要参与计算,则在B1输入=--LEFT( ...

  6. gustafson,Sun-Ni,Amdahl

    gustafson 定律由 John Gustafson首先提出.描述:系统优化某部件所获得的系统性能的改善程度,取决于该部件被使用的频率,或所占总执行时间的比例. Gustafson定理中,加速比与 ...

  7. struts(二)——struts框架实现的基本原理

    上一篇文章,我们介绍了MVC框架的基本原理,并指出了这个基本框架中存在大量if…else的问题.今天我们来介绍一下struts框架,让struts解决这个问题. 首先,看一下粗略的时序图: Actio ...

  8. Git双机同步

    如果使用git init 初始化,当客户端仓库push内容时,服务器端仓库可以看到log,但是更新的文件不能显示,必须使用git reset --hard才能更新内容

  9. cocos2d-html5游戏图片资源选择

    cocos2d-html5游戏图片资源能够选择,单张的图片作为一个精灵或者场景的载入对象.也能够把图片给做成plist文件.通过plist来訪问图片资源.其中优缺点.使用方式在个人的測试其中体现例如以 ...

  10. ORACLE函数之日期时间运算函数

    1            ADD_MONTHS 格式:ADD_MONTHS(D,N) 说明:返回日期时间D加N月后相应的日期时间.N为正时则表示D之后:N为负时则表示为D之前.N为小数则会自己主动先删 ...