如简介中提到,分发者(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. 数据库采用多表连接查询,对应javaBean文件连接方式

    在一个Web项目中,只要是存在数据库就一定会有JavaBean文件.一个JavaBean文件会对应一张数据库中的表,供dao中的代码来调用用来存取数据.我们都知道,在数据库设计的时候,如果A.B两张表 ...

  2. 【前端攻略】:玩转图片Base64编码(转)

    引言 图片处理在前端工作中可谓占据了很重要的一壁江山.而图片的Base64编码可能相对一些人而言比较陌生,本文不是从纯技术的角度去讨论图片的base64编码.标题略大,不过只是希望通过一些浅显的论述, ...

  3. [WPF]不规则窗体的实现

    Microsoft Expression Design 4 导入做好的login.Png图片 调整美工板大小 导出,右边格式为XAML WPF 资源字典,实时效果为XAML效果 文件名login.xa ...

  4. Mysql 当安装完成后不执行 mysql 和 performance_schema 数据库

    Mysql问题  ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)   Mysql ...

  5. [置顶] android系统如何在静音模式下关闭camera拍照声音(2)

    之前写过一篇“android系统如何在静音模式下关闭camera拍照声音”的博客,今天来写他的续篇,继续探讨这个问题. 公司新需求,要求在camera应用中添加一个开关,可以进行拍照声音的关闭和开启. ...

  6. Facebook Asynchronous Layout and Rending

    Facebook Asynchronous Layout and Rending by 吴雪莹 dispatch_async(backgroundQueue, ^{ storyNode = [[FBS ...

  7. 轻松管理您的网络password

    在互联网在现在这个时代,,我们注册了很多帐户.支付宝账号password,各种宝账户password.微信,QQ,电话password,购买各种网站,金融password,它是不是让孩子们的鞋子瞬间淡 ...

  8. 重新想象 Windows 8 Store Apps (6) - 控件之媒体控件: Image, MediaElement

    原文:重新想象 Windows 8 Store Apps (6) - 控件之媒体控件: Image, MediaElement [源码下载] 重新想象 Windows 8 Store Apps (6) ...

  9. 做web项目时对代码修改后浏览器端不生效的应对方法(持续更新)

    做web项目时,经常会遇到修改了代码,但浏览器端没有生效,原因是多种多样的,我会根据我遇到的情况逐步更新解决办法 1.运行的时候采用debug模式,一般情况下使用项目部署按钮右边那个按钮下的tomca ...

  10. MVC与三层架构

    我们平时总是将三层架构与MVC混为一谈,殊不知它俩并不是一个概念.下面我来为大家揭晓我所知道的一些真相. 首先,它俩根本不是一个概念. 三层架构是一个分层式的软件体系架构设计,它可适用于任何一个项目. ...