SQL SERVER 的数据库复制要点

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

SQL SERVER 的数据库复制数据库的复制是分布式数据库应用程序中常用的一种数据拷贝技术,它将一个数据库中的数据拷贝到通过局域网(LAN)、广域网(WAN)或Internet网络连接的不同站点或同一个服务器中的不同数据库中,并能够自动保持这些数据的同步,使各个拷贝具有相同的数据。

一、SQL SERVER复制技术

(一)、复制结构

SQL SERVR 数据复制基于“出版—订阅”模型,它由出版者、分发者和订阅者三种服务器构成。出版服务器标识其数据库中的哪些数据用于复制,并检测这些数据的变化和维护该站点中的所有出版信息。

分发服务器中建立一个或多个分发数据库,用来保存出版服务器的出版物,并向订阅者传递它们所订阅的复制数据。

订阅服务器用于存储复制数据和接收对复制数据的更改,SQL SERVE 7.0还允许修改订阅服务器所接收到的出版物。

出版服务器所出版数据的最小单位为条目,出版条目可以是数据库中的表或存储过程。SQL SERVER允许对所出版表添加纵向或横向过滤器,从而使出版条目中只包含表中的某些列或其中的某些数据行,一组出版条目的集合构成一个出版物。

订阅服务器对出版物的订阅方式有推式订阅和拉式订阅两种,SQL SERVER中的每个出版物均支持推式订阅和拉式订阅这两种订阅方式。所谓推式订阅是指当出版物内容被修改时,由出版服务器通知订阅服务器,而不需要订阅服务器进行查询。推式订阅的优点是订阅服务器能够及时了解出版数据的改变情况,但它相应加重了出版服务器的负载。所以,推式订阅适合于需要近乎实时要求的数据复制。

拉式订阅是指由订阅服务器定期轮询出版服务器中出版物的内容是否改变,之后决定是否需要再次进行复制。拉式订阅能够减轻出版服务器的负担,所以常用于拥有大量订阅者的数据复制领域。此外,拉订阅也适合于移动用户,因为移动用户与出版服务器间没有永久固定的通信连接,他们采用订阅方式,只是在需要时才查询出版物内容的变化情况。

(二)复制代理

SQL Server 复制部件采用模块化设计,各种复制操作通过不同的复制代理实现。SQL Server 中的复制代理包括:

快照代理:快照代理运行在SQL Server 代理服务环境下。其功能是:为复制准备表结构、初始化出版表和存储过程的数据文件、将出版物快照存储到分发服务器的分发数据库中、并记录分发数据库的同步状态信息。每个出版物在分发服务器上均运行着自己的快照代理,并通过快照代理与出版服务器连接。

日志阅读代理:将用于复制的事务从出版服务器的事务日志中拷贝到分发数据库。每一个使用事务复制出版的数据库在分发服务器上均运行着自己的日志阅读代理,并通过该代理与出版服务器连接:

分发代理:将保存在分发数据库中的事务或出版物快照传递到订阅者。分发代理运行在SQL Server 代理服务环境下,可以直接使用SQL 企业管理进行管理。对于快照复制和事务复制,如果在配置推订阅时采用立即同步(所谓同步是指维护出版服务器上

的出版物和订阅服务器上的复制品之间具有相同的表结构和数据)方式,那么每个出版服务上在分发服务器上启动各自的分发代理,并由它实现与订阅者间的连接;如果将推订阅配置为非立即同步方式,那么所有的快照或事务出版物在分发服务器上共享一个分发代理,并由它实现与订阅者间的连接。快照和事务出版物拉订阅的分发代理则运行在订阅服务器上,而不是在分发服务器上。快照复制和事务复制没有合并代理。

(三)复制类型

在分布式数据库应用环境中,不同的应用领域对数据复制的要求各异,不可能有一种复制方法能够适合所有领域中的应用需要。为此,SQL Server提供了以下三种复制类型来满足不同环境中的应用需要:

快照复制:

事务复制:

合并复制:

下面分别介绍三种复制的工作过程。

1.快照复制

快照复制是SQL Server中最简单的一种复制方式,它拷贝数据库中出版物在某一时刻的结构和数据状态,即建立出版物快照,之后通过复代理将出版物快照复制给订阅服务器。

快照复制操作由快照代理和分发代理实现。快照代理将出版物中各条目(表)结构和数据拷贝到分发服务器的快照文件(但不是分发数据库)中,并在分发服务器的分发数据库中记录复制同步操作。分发服务器再根据分发数据库中的同步记录将快照文件传递到订阅服务器的目的数据库中。

快照代理的具体工作过程为:

①快照代理建立从分发服务器到出版服务器的连接,并对出版物中所包含的所有表(条目)设置共享锁,以确保复制数据的一致性。

②快照代理再建立从出版服务器的连接,并将各出版条目的结构拷贝到分发服务器的.sch文件中(实际拷贝的是建立复制表的Transact-SQL语句),该文件存储在分发数据库文件目录下的一个子目录中。

③快照代理再建立从分发服务器到出版服务器的连接,并将历史记录和所有错误写入分发数据库中。

④快照代理将出版服务器上出版物中各条目的数据写入分发服务器的数据文件中,该文件与出版物的结构文件(*。sch)存储在同一目录下。数据文件和结构文件构成一个表在某一服务器,出版条目的数据文件采用SQL Server本地批拷贝文件格式(*.bcp)存储,否则,数据文件按文件格式存储。

⑤快照代理向分发数据库的Msrepl_commands和Msrepl_transactions表中添加记录,说明同步集合的存储位置和订阅服务器的同步任务命令。分发数据库中Msrepl_transactions和Msrepl_commands的表结构如表所示

快照复制过程中,分发代理的工作步骤为:

(1)分发代理建立从运行该代理的服务器至分发服务器之间的连接。对于推订阅和拉订阅,分发代理分别运行在分发服务器和订阅服务器上。

(2)分发代理从分发数据库的Msrepl_commands表中读取同步集合位置,从Msrepl_transactions表中读取订阅服务器的同步命令。

(3)分发代理将结构文件和数据文件传递到订阅服务器,并根据同步命令在订阅服务器的目的数据库重新建立与出版物中各个条目相同的数据表,从而使出版物中所有条目同时被同步,保持所有表间的事务完整性和参照完整性。在以上操作过程中,分发代理锁定它所影响的整个表,因此这时所有其它进程不能对该表设置排它锁。

2.事务复制

在出版大型数据库时,如果采用快照复制方式,分发服务器为完成复制操作,必须在每次出版物内容变化时从出版服务器中拷贝表结构及其中的大量数据,之后再将它们传递给订阅服务器,这大大加重了网络的通信负担。对于低速连接的网络环境,采用快照复制将严重影响应用程序的正常运行。

为解决这一问题,SQL Server提供了事务复制方式。采用这种方式时,当订阅服务器对出版服务器中的出版物做到初始同步后,SQL Server监视INSERT、UUPDATE、DELETE等数据修改语句的执行,并对影响出版物的事务进行标识。事务日志阅读代理从事务日志中捕获出版条目中数据的变化,并将引起这些变化的事务拷贝到分发服务器的分发数据库中。之后,由分发服务器将这些事务传递给订阅服务器,并在订阅服务器上顺序执行这些事务,对复制品做增量修改,从而保证订阅服务器中的复制品与出版服务器出版物中的数据一致(但不是实时一致)。由于事务的数据量远小于它所操作的数据量,所以采用事务复制方式能够有效减轻网络的通信负担。

事务复制由快照代理、事务日志阅读代理和分发代理实现。快照代理将出版物中各条目(表)的结构和数据拷贝到分发服务器的快照文件中,并在分发服务器的分发数据库中记录复制同步操作,快照代理的这一工作过程与快照复制中基本相同。

但在事务复制的初始同步阶段,SQL Server允许用户在订阅服务器上手工建立出版物的初始快照,这一操作被称做手工同步。对于非常大的出版物,可选择使用手工同步操作,这时用户从磁带或其它设备中手工建立出版物快照,使SQL Server不再运行快照代理来同步复制操作,它认为出版服务器和订阅服务器之间已经同步,所以可以立即传递出版物的修改事务。

日志阅读代理运行时,它首先读取出版物的事务日志,并标识出影响出版物的INSERT、UPDA TA、DELETE语句或其它数据修改语句。之后,日志阅读代理交这些被标识的事务批拷贝到分发服务器的分发数据库中。分发数据库作为这些事务的一个存储转发队列,再将这些事务中已提交的事务传递给订阅服务器。

相关文档
最新文档