数据复制

基础概念:
Sqlserver中的名词:
出版物(publication)和论文(article):论文是出版物的基本组成单位,包括表,视图,存储过程和函数,出版物是论文的集合,可以包括 一个或多个论文。
出版者:发出出版物的服务器。
分发者:将从出版者发出的出版物送至订阅者的服务器,并负责维护分发数据库。
订阅者:存储复制的数据拷贝,并维护已出版的数据的服务器。

出版者,分发者,订阅者,三者不一定相互独立,但出于性能考虑,通常是独立的。

订购类型:推订购和拉订购
推订购是指 出版者的数据库发生修改,就会将修改内容发送给订购者,而不用订购者发出请求。 通常在数据同步性要求高的场合使用。
拉订购是指 订购者每过一段时间就会要求复制出版数据库的变化。通常在订购者较多或者由订购者决定同步出版数据库变化的场合使用。

复制类型:
1. 快照复制:在某一时刻给出版数据库中的出版数据照相,将数据复制到订阅者。实现简单,适用于数据变化较少的场合。
2. 事务复制:复制的内容不是数据而是多条delete,update,insert语句或存储过程,修改发生在出版者上,订购者只以数据读取的方式将修改反应到订购数据库,避免了复制冲突。通常使用在数据更新平率较大且希望修改尽快复制到订购者的搀和。
3. 合并复制:允许订购者对出版物进行修改,并将修改合并到目标数据库。各个节点独立工作,而不考虑数据一致性。如果发生冲突,则按照一定的规则或自定义的冲突解决策略进行修改。

复制代理:
(1) 快照代理
  快照代理Snapshot Agent 在分发者上创建并存储快照文件,在分发数据库中记录 出版数据库和订购数据库之间的同步信息。快照代理运行在分发者服务器上并与出版者相 连接,每一个出版物都有自己的快照代理。
(2) 日志阅读代理
  日志阅读代理(Log Reader Agent) 将出版者事务日志中标有复制的事务移至分发数 据库。使用事务复制的每一个出版数据库都有自己的日志阅读代理。日志阅读代理运行在 分发者服务器上。
(3) 分发代理
  分发代理(Distribution Agent) 能够将存储在分发数据库中的事务或快照分发到订购 者服务器。如果事务出版物或快照出版物被设置为只有创建了推订购即立即在出版者和订 购者之间同步,则在分发者上它们各自都会有一个分发代理;否则事务出版物和快照出版 物将共享一个分发代理。合并出版物没有分发代理。
(4) 合并代理
  合并代理(Merge Agent) 被用来移动、合并在快照代理创建初始快照之后所发生的 递增修改,每一个合并出版物都有自己的合并代理。当使用推订购合并出版物时,合并代 理运行在出版者上;当使用拉订购合并出版物时,合并代理运行在订购者上。快照出版物 和事务出版物没有合并代理。
(5) 队列阅读代理
  在快照复制或事务复制时如果选择了queued updating 选项或immediate updating with queued updating as a failover 选项,则需要使用队列阅读代理。
  队列阅读代理是运行在分发者上的多线程代理,它主要负责从分发者消息队列中读到 消息并将包含在消息中的事务应用到出版者。


复制的一致性:
1.事务的一致性:指所有参与复制的节点,在复制结束之后都必须具有相同的数据结果集。
事务的一致性包括,立即事务一致性和潜在事务一致性。
立即事务一致性:指所有参与复制的节点在任何时刻都必须有相同的数据,因此不适合有大量节点参与的事务处理。
潜在事务一致性:允许数据在出版数据库和订购数据库之间保持异步的一致,既出版物在发生变化之后,经过一定的延时才将变化反映到订购者那里。事务复制和快照复制都不能保证复制的立即事务一致性,事务复制只是比快照复制缩短了数据分发的等待时间,本质上都是潜在事务一致性。

2.数据的集中性:所有的节点最终具有相同的数据结果。但与事务的一致性不同,这里的数据结果可能不包括某个节点所有事物都执行后的结果。

合并复制强调的就是数据的集中和节点的自主而不是事物的一致性。在合并复制中,各个节点只在最后合并时才保持数据的同步。


同步模式:
1. 手工同步:在创建订购时,通过在订购者手动装入初始快找文件而不是通过网络,这就是手工同步。在出版物较大的场合,使用手工同步。手工同步是指不必运行快照代理来进行出版者和订购者之间的快照初始化,但在以后的复制过程中快照代理仍要运行。
2. 自动同步:订购者与出版者之间的初始同步由SQL SERVER自动完成。


复制的拓扑结构:
1. 中心出版者
2. 带有远程分发者的中心出版者
3. 出版订购者
4. 中心订购者


中心出版者:
一台服务器既是出版者又是分发者,该配置适合于 从数据中心相使用者复制数据,并且这些数据不允许被修改。


带有远程分发者的中心出版者:
将出版者和分发者分离开。适用于复制的事务或数据较大或有太多的订购者的环境。


出版订购者:
在该配置下,有两个出版者原始出版者:和出版订购者出版订购者。是原始出版者的 订购者,同时也扮演出版者角色向其它订购者出版数据。


中心订购者(食品监管平台适用):
中心订购者是指有许多出版者向一个订购者复制出版事务和数据。目标表被水平分割每个分割块都含有一个标识本地数据的主键值。每个出版者只出版其中的一个分割块。对于那些具有上滚数据业务的应用环境来说,该配置方案很有价值。如在一个大型分销系统中,对销售表进行水平分割。每一具销售分部都是出版者,将只属于它自己的销售数据出版到销售总部。

猜你喜欢

转载自unck-luck.iteye.com/blog/1336360