数据库

位置:IT落伍者 >> 数据库 >> 浏览文章

用SQL实现分布式数据复制


发布日期:2018年09月20日
 
用SQL实现分布式数据复制

复制的概念

复制作为一个重要并且强大的技术为分布式数据的存储和处理提供了有力支持微软公司的SQL Server可以生成数据的拷贝并能把这些数据的拷贝分发到不同的地方自动进行数据的同步保持所有的数据拷贝具有相同的数据SQL Server采用一种称为松散一致的复制模式在两个数据库之间进行复制这两个数据库既可以在同一台计算机上也可以在不同的计算机上彼此通过局域网(LAN)广域网(WAN)进行连接

我们公司在开发西安市国家税务局内部网络信息系统正是利用了SQL Server的复制功能实现全西安市分布的税收数据的复制同步西安市国家税局包括市局机关和下属的个基层征管分局分布于西安市不同的地理位置彼此通过DDN专线或X专线连接构成了西安国税局广域网市局信息中心用Windows NT Server 构建一个Windows NT的单主域网络环境下属每个分局有一台运行Windows NT Server 或Windows NT Server 的服务器通过广域网加入到单主域的环境中作为一台独立的服务器运行各分局建有本分局的局域网网络环境为Novell和Windows NT的混合网络环境

全西安市所有的纳税人均到指定的征管分局进行纳税登记纳税申报国税局用FoxPro开发了基于Novell网络环境的税收征管软件在各分局征收大厅由Novell的无盘工作站负责税收数据的录入写入到Novell服务器上的数个DBF文件中由于税收征管数据分布在全市不同的征管分局为全市范围纳税信息的检索和分析带来困难

新系统的开发在原有基础上编制专门的数据转换程序把存储于Novell服务器上的DBF文件转换到本分局Windows NT上的SQL Server数据库中每个分局的SQL Server数据库与市局信息中心的SQL Server数据库进行复制及时把最新的税收数据传递到市局信息中心这样在市局信息中心就有了全市所有税收征管数据信息中心建立Intranet Web站点用户的计算机只要连上各分局的局域网或者通过Modem拨号到信息中心的RAS服务器就可以用IE浏览器访问IIS服务器由IIS服务器向SQL Server服务器发出数据请求并把结果按HTML格式返回给用户浏览器

系统的设计采用客户浏览/服务器的多层结构方式客户端采用标准的浏览器访问方式用户在自己的计算机上安装IE浏览器(WINWINNT中已内置IE浏览器)输入Web 站点地址就可以进入该系统

在中间层由Internet Information Server完成大多数的用户业务规则的实现例如对用户权限的限制数据请求的生成等IIS会根据不同的用户所拥有的不同的权限生成不同的页面将来当业务规则发生变化时只需要在Internet Information Server上进行相应的更改这种更改就会在系统的每一个用户下次访问系统时得到体现

在系统的最低层由SQL Server大型关系数据库作为支撑西安全市的税务数据是一个以GB为单位的大型数据库纳税数据表中的数据记录超过数百万条在如此大量的数据中进行快速的数据检索和数据分析一般的数据库软件是难以完成的SQL Server关系型数据库较好地完成了用户提出的各种数据的检索要求同时也正是利用了SQL Server的数据复制技术把近二十个分局的数据通过广域网复制到信息中心来使用户能快速获取全市的纳税信息

该系统实现的一个重要部分就是各分局税收征管数据的复制SQL Server的复制有以下几个特点

基于事务

有复制标志的事务从源数据库的事务日志读出并送到目的数据库例如执行了一条Insert语句使源数据库的数据发生变化这条Insert语句会被写入到一个数据库中我们称之为发布数据库(Distrbution)在适当的时候这条Insert语句会送到复制的目的数据库并执行该Insert语句以此保证两端的数据保持同步

以三种不同的方式使用服务器

()出版(Publication)作为源数据服务器(在本系统中是各分局的SQL Server服务器)当标志复制的表(Table)的数据发生变化时产生该变化的事务被刻上复制标志由日志阅读器(LogReader)把该事务送入分发数据库(Distribution Database)这些事务寄存在分发数据库中直到被传送到目的服务器

()分发(Distribution)包含有分发数据库分发服务器接受出版服务器的更改事务并保存到分发数据库中在适当的时候把这些事务送入订阅服务器缺省情况下分发服务器与出版服务器为同一台计算机当然也可以是不同的计算机

()订阅(Subscription)接受出版服务器的出版数据

使用专用的SQL Server数据库作为复制数据的可靠队列

SQL Server的复制采用松散一致复制模式其特征是源数据与拷贝数据之间并不是在任何时刻都保持完全一致它们之间有一个延时源数据库的变化不是立刻反应到订阅数据库中而是把产生变化的事务写入一个专门的分发数据库中(Distribution)当这些事务累计到设定值时由事务分发器(Distribution task)把事务送到订阅服务器中订阅服务器再执行这些事务来保持源数据与拷贝数据的一致分发数据库完成了一种缓沖的作用当因网络或其他问题使复制不能完成时源数据的变化会一直保存在分发数据库中直到问题解决再自动把所有保存的事务送出并且复制两端的数据仍保持一致这种方式使SQL Server数据的复制有极大的自适应性和可靠性最大限度减少用户的干预

SQL Server的复制主要组成部分有:日志阅读(Log Reader)初始同步(Synchornization)数据分发(Distribution)和分发数据库

初始同步是复制真正开始执行的第一步类似于开始传送事务前先给源数据库照一个快照把传送事务前的那一时刻的数据拷贝到订阅数据库其实质就是把那时刻的数据生成BCP文件通过网络传到订阅数据库完成初始同步后再开始由日志阅读初始同步以后的事务并由数据分发过程传送分发数据库中的事务到订阅服务器中去

复制的实现

下面我们结合在西安市国家税务局内部网络信息系统的实例介绍SQL Server的配置以及其中需要注意的事项

复制前的准备

()使用一种字符集市局和分局的SQL Server的配置使用一种字符集

()允许分局服务器有足够的事务日志空间

()最好设置MSSQL Service 和SQLExecutive Service Auto Start at Boot time

复制的安装

()运行Microsoft SQL Enterprise Manage在Server Manager窗口中选择源数据服务器

()从Server选单选择Replication Configuration 然后从所出现的子选单选择Install Publishing出现Install Replication Publishing 对话框

()选择Local-Install New Local Distribution Database选项(配置该服务器充当自身的分发服务器)

在为分发数据库建立分发数据库设备时要根据源数据的更新率估计分发数据设备的大小尽量把分发数据库建大些

设置出版和订阅服务器和数据库

在前面的安装分发数据库中如果在询问是否在本次配置服务器选项对话框中选择YES则出现Replication-Publishing对话框在Enable Publishin to These Servers(左边列表)目录中选择订阅的服务器在本实例中为信息中心的SQL Server在Publishing Database下(右边列表)选择被允许出版数据的数据库

回到Server Manager选择订阅服务器从Server选单选择Replication Configuration;然后从出现的下拉选单选择Subscribing出现Replication-Subscribing对话框在左侧的Publishing Server框中选择源数据SQL服务器在右侧的框内选择拷贝的数据库

复制数据的设置

安装SQL Server复制并设置复制的服务器和数据库后要进行出版物的设置就是指定复制数据库中那些表要进行复制一个出版物可以包括很多表

从Server Manager窗口选择源数据服务器

从Manage选单选择Replication然后选择Publication对话框

选择NEW出现Edit Publications对话框为该复制数据设置一个名字选择要复制的表到右边的列表

这里要注意到这样一个情况因为我们要从多个源数据库向一个中心服务器数据库复制数据一定要保证源数据之间不会互相影响复制的表中要有字段定义数据的来源

在Edit Publications对话框选择右边列表中要复制的表Edit按钮进入Manage Article对话框在最下面的Restriction Clause中输入标识唯一源数据的条件

在Manage Article对话框中选择Scripts标签Generate按钮出现模式源设置画面这里需要设置初始同步的模式在多个源数据库向一个中心数据库复制数据时这里一定要选择DELETE DATA Using Restriction Clause

上一篇:MicrosoftSQLServer7.0数据库创建与管理

下一篇:SQL数据操作基础(初级)2