如简介中提到,分发者(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. HDU 5066 Harry And Physical Teacher(物理题)

    HDU 5066 Harry And Physical Teacher 思路:利用物理里面的动量守恒公式.因为保证小车质量远大于小球.所以能够把小车质量当成无穷大带进去,得到答案为2 * v0 - v ...

  2. JSP内置对象之request

    书接上回,上次跟大家概括的说了说JSP的九种常用内置对象.接下来就该聊聊它们各自的特点了,今天先说说request吧. 下面是request的一些常用方法: isUserInRole(String r ...

  3. VS2010添加默认路径,库以及Lib

    下面以OpenCV为例,不需要每次打开VS2010都手动添加OpenCV的库和lib,具体方法如下: VC++目录 步骤一:用任意文本编辑器打开:  VS安装目录中的\VC\VCWizards\def ...

  4. pygame各个模块概述

    在pygame中,有很多模块,每个模块对应着不同的功能,如果我们知道这些模块是做什么的,那么,对我们的游戏开发会起到关键性的作用. 我们就说说pygame中的各个模块吧!!! #pygame modu ...

  5. C# webservice初探

    转载请注明出处Coder的不平庸:http://blog.csdn.net/pearyangyang/article/details/46348633 因为工作的终端曾经是直接对数据库进行操作,导致每 ...

  6. linux环境下的线程的创建问题

    pthread_create函数用于创建一个线程 函数原型 #include<pthread.h> int pthread_create(pthread_t *restrict tidp, ...

  7. 划分树 静态第k大

    划分树是保存了快速排序的过程的树,可以用来求静态第k小的数 如果,划分树可以看做是线段树,它的左孩子保存了mid-L+1 个 小于等于 a[mid] 的数字,  右孩子保存了 R-mid个大于等于a[ ...

  8. 黄聪:Microsoft Enterprise Library 5.0 系列教程(一) Caching Application Block (高级)

    原文:黄聪:Microsoft Enterprise Library 5.0 系列教程(一) Caching Application Block (高级) Caching Application Bl ...

  9. oracle分区表运行计划

    分区表有非常多优点,以大化小,一小化了,加上并行的使用,在loap中能往往能提高几十倍甚至几百倍的效果. 当然表设计得不好也会适得其反.效果比普通表跟糟糕. 为了更好的使用分区表,这里看一下分区表的运 ...

  10. ASP.NET之Cookie(坑爹的Response.Cookies.Remove)

    原文:ASP.NET之Cookie(坑爹的Response.Cookies.Remove) 在web开发中Cookie是必不可少的 .NET自然也有一个强大的Cookie操作类,我们用起来也非常方便, ...