现在的位置: 首页 > 综合 > 正文

SQLServer 高可用性之–复制与发布

2012年10月30日 ⁄ 综合 ⁄ 共 3351字 ⁄ 字号 评论关闭

SQL Server 2005 在 SQL Server 2005 Standard Edition 和 SQL Server 2005 Enterprise Edition 中均提供了所有主要的高可用性功能,如 提供了数据镜像、复制、故障转移群集、日志传送功能,无需额外的资金投入。以下以复制为题讲解.

复制--(发布与订阅)是一组技术,可以将数据库里的数据和对象从一个数据库复制和发布到另一个数据库,并能实现数据库间的同步,保持数据的一致性。
复制的介绍:
SQL 2005中的复制不仅仅是将一个数据库里的内容通过网络复制到一个或多个服务器上,也能让数据库的变化情况通过网络送递给其它服务器。通过这种手段,可以保证在多台服务器中的数据的一致性,任何一台服务器的数据产生了变化,其他所有的服务器数据都会跟着变化。
复制简介:复制的组件包括发布服务器、发布、项目、分发服务器、订阅服务器和订阅等。

  • 发布服务器,相当于出版商,其任务是负责提供数据库里的内容给其他服务器。发布服务器可以有一个或多个发布,每个发布定义一组要复制的具有逻辑关系的对象和数据。
  • 发布,相当于刊物是数据库中的一个或多个项目的集合。发布服务器以发布为单位向其他服务器发布数据,而且每个发布中只能有来自单一数据库的内容,不能有来自多个数据库的内容。
  • 项目,相当于刊物中的文章,是发布服务器要发布的对象和数据,可以是数据表或存储过程等数据库对象,也可以是数据表中的全部记录或部分记录,甚至可以是记录中的某几个字段。多个项目组成一个发布。
  • 分发服务器,相当于发行商,其任务是负责将发布服务器要发布的数据传送给订阅服务器。
  • 订阅服务器,相当于订阅者,用于接收发布服务器或分发服务器传送过来的数据。通常发布服务器只有一个,而订阅服务器可以是一个或多个。
  • 订阅是把发布传递到订阅服务器的请求。在SQL 2005 中,有两种订阅方式:推送订阅和请求订阅。推送订阅是由发布服务器主动传递发布给订阅服务器,只要指定的时间一到,发布服务器就会将数据送到订阅服务器; 请求订阅与发送订阅相反,指定时间到的时候,由订阅服务器向发布服务器要求订阅发布。

在复制的过程中,还有一个名为“复制代理"的组件。复制可以使用很多称为代理的独立程序来执行,跟踪更改和分发数据相关的任务。复制代理负责在发布服务器和订阅服务器这间复制和移动数据。
既然发布服务器可以将发布传递给订阅服务器,那么还要分发服务器干什么呢?这个问题就好像诸可以去出版社买书,那还要书店干什么一样。其中一个重要的原因是可以减轻发布服务器的负担
复制的类型:
不同的应用程序对复制的要求不同,SQL 2005提供了3种不同的复制类型供选择,这3种复制类型分别为快照复制、事务性复制和合并复制
    快照复制是一种简单的复制方法,像照相一样以特定的时刻的瞬间状态发布给订阅服务器,而不监视数据的更新,在发生同步时,发布服务器将生成完整的快照并将其发送到订阅服务器上。
    由于订阅服务器只是单方面接受发布服务器传送的内容,因此这种方式比较适合数据更改量很大,但很少发生的情况。例如订阅服务器的数据库更改不重要、发布服务器更新比较少、订阅服务器只需要从发布服务器复制少量数据、在发布服务器上短期内出现大量更改等情况。
    由于快照复制是将整个发布都传递给订阅服务器,所以当数据量很大时,不适合用该复制类型。此类型会增加网络负担和影响网络性能。
    在默认情况下,快照复制是只读发布,订阅服务器的更改不能加传给发布服务器。
    事务性复制类型是以事务为基础来进行发布的。在使用整改一复制时,系统会记录在发布服务器上所做的数据更改和架构更改,在修改发生时便以事务记录的形式传递给订阅服务器。因此订阅服务器的数据库也发生与发布服务器相同的修改。
    事务性复制通常用在发布服务器数据库内容变动比较频繁,又需要在短时间内发布到订阅服务器上的情况。在默认情况下,事务性发布的订阅服务器也是只读的,对订阅服务器的更改也不能回传给发布服务器。
    在进行事务性复制之前,必须先进行一次快照复制,将发布服务器的内容以快照的形式发布到订阅服务器,然后再在订阅服务器上执行用事务性复制方式发布过来的事务,维护数据库的同步。这种方式有点类似于恢复事务日志备份。
    合并复制类型通常也是从快照复制开始的,在进行过快照复制后,用触发器跟踪在发布服务器和订阅服务器上所做的数据更改和架构更改。合并复制允许在发布服务 器和订阅服务器上同时进行数据修改,并且可以让订阅服务器里修改的数据也反应到发布服务器中,因此叫做“合并复制”。
    合并复制多用于发布服务器与订阅服务器都修改数据的情冲下。使用合并复制可以在多台订阅服务器上不同时间里更新同一条数据,并将其更改更改传递给发布服务 器和其他订阅服务器。也可以在订阅服务器接收完数据后,脱机更改数据,然后再联网将数据与发布服务器以及其它订阅服务器同步。
    复制代理:复制使用许多称为代理的独立程序执行与跟踪更改和分发数据关联的任务。在SQL 2005中复制代理分为以下几种。

  • 快照代理:快照代理通常与各种类型的复制一起使用。快照代理的任务是准备已发布表的架构和初始数据以及其他对象、存储快照文件并记录要分发给订阅服务器的同步信息。快照代理运行在分发服务器上。
  • 日志读取器代理:日志读取器代理通常与事务性复制一起使用。日志读取器代理的任务是将发布服务器上的事务日志中标记为复制的事务移动到分发数据库中,每个数据库都有专用的日志读取器代理程序负责读取其事务记录。该代理运行在分发服务器上并与发布服务器连接。
  • 分发代理:分发代理通常与快照复制和事务性复制一起使用。分发代理的任务是将快照式和事务性复制的内容传递给订阅服务器。分发代理将初始快照应用于订阅服务器,并将分发数据库中保存的事务移动到订阅服务器。分发代理程序既可以运行于分发服务器,也可以运行于订阅服务器。
  • 合并代理:合并代理通常 与合并复制一起使用,其任务是负责同步更新各服务器的数据内容,并在发生冲突时解决冲突。合并代理将初始快照应用于订阅服务器,然后移动和协调分发服务器 与订阅服务器所发生的数据变化。每个合并订阅都有自己的合并代理,该代理同时连接到发布服务器和订阅服务器并对它们进行更新。合并代理既可以运行于分发服 务器,也可以运行于订阅服务器。在默认情况下,合并代理将订阅服务器上的数据更改传递到发布服务器,然后将发布服务器上的数据更改传递到订阅服务器。
  • 队列读取器代理:队列读 取器代理通常与包含排队更新选项的事务性复制一同使用。队列读取器代理运行于分发服务器,并将订阅服务器上所做的数据更改移到发布服务器。与分发代理和合 并代理不同,只有一个队列读取器代理的实例为给定分发数据库的所有发布服务器和发布提供服务器。在事务复制中可以采用立即更新和排队更新两种方式从订阅服 务器对发布服务器数据库进行修改操作。当使用排队更新方式时,队列读取器代理负责将排队中的数据移到发布。

在了解到复制的基本概念之后,接着进行实践,将介绍发布服务器、分发服务器与订阅服务器的设置,及如何实现复制操作。
复制的步骤:无论是快照复制、事务性复制还是合并复制,创建复制都要经过以下几个步骤。
step1:创建发布服务器。选择要发布的服务器,如果有可能的话,也可以创建分布服务器,发布服务器和分发服务器可以是同一台服务器。
step2:启动SQL Server代理。如果SQL Server 代理没有启动,则选择是否在启动计算机时自动启动Sql Server 代理。
step3:创建发布。在创建发布服务器的同时,系统会同时创建发布,发布内容有数据库、数据表、存储过程、用户定义函数。
step4:选择发布类型。选择是快照发布、事务性发布还是合并发布。
step5:设置复制代理及安全。设置可以运行代理的帐号及密码。
step6:创建订阅服务器和订阅有了发布之后,还必须要创建订阅服务器和订阅,包括订阅的方式、订阅的调度等。

引用示例:
1、两台SQL Server数据同步解决方案
2、另一个示例
3、使用数据库订阅复制解决两个数据库同步问题
4、http://blog.csdn.net/no_miss/archive/2006/08/10/1047550.aspx

抱歉!评论已关闭.