您的位置:首页 > 数据库

SQL server2005 和 SQL server2008配置订阅实现数据库同步

2011-11-23 20:04 344 查看
最近因项目迁移数据库,需要对SQL server2005 和 SQL server2008上的一个数据库保持数据同步。其中SQL server2005 是数据会更新的库,而SQL server2008则是需要跟SQL server2005 保持同步。SQL server中提供了“复制(Replication)”的功能,但是在配置上还是有很多细节需要注意的。在网上也查找了很多相关资料,经过一天的摸索,终于配置好了,现总结如下:

Replication中有三种角色:1、发布服务器(Publisher),提供发布的数据(称为快照SnapShot);2、分发服务器(Distrbutor):分发Publisher发布的快照,在配置的时候常常配置为Publisher本身;3、订阅服务器(Subscriber):接收Distrbutor分发过来的快照,将其数据库更新为与Publisher的一致。

发布也有两种形式:1、由Publisher来push,那么是Publisher去连接Subscriber服务器,而因为驱动包的问题,SQL server2005 无法访问SQL server2008,所以不采取这种设置;2、由Subscriber来pull,则是Subscriber去连接Subscriber,这里采用这种方式。

配置细节:

一、前提:

1、 在Publisher、Subscriber上都要打开SQL Server的TCP/IP、Named Pipes服务,在SQL Server配置工具中打开;都要启动SQL Server Agent服务。

2、快照文件:快照文件一般是保存在一个Publisher、Distrbutor和Subscriber都有相关权限的文件夹中(或者是采用ftp方式来连接),而共享权限是按主机名来配置的。Publisher设置的存放快照文件的地方和Subscriber读取快照文件的文件夹要完全一致。最好的方式就是在一个服务器(如果Publisher本身也是服务器也一样)上建一个文件夹,比如名为"SnapData",假设建该文件夹的机子ip为10.10.10.10,将这个文件夹共享给Publisher、Distrbutor和Subscriber,一般都是按主机名字来配置。在配置Publisher和Subscriber的时候都将快照文件夹设为“//10.10.10.10/SnapData”,这样就可以确保快照文件可以顺利传递了。

二、配置Publisher和Distrbutor

1、用主机名登录本机数据库,不要用local的形式登录,因为发布必须用主机名,如果用local登录的话配置的时候还是要提示用主机名登录,而且最后会提示无法把本机当做Distrbutor因为连接在使用的原因。

2、选择第一种方式(Snapshot publication)

3、在配置Snapshot Agent界面是配置快照代理的,比较重要。选择立即创建快照并保持有效;同时第二个也要选上,并且对其进行更改:更改快照产生的频率。默认的频率是每天每隔一个小时产生一次快照,就是说隔一个小时发布快照,让Subscriber接收这个快照更新数据。所以这个设置就是数据更新的频率。订阅的机制就是按这个设置来产生快照,同步数据的。而不是去捕捉Publisher的数据库数据变动,然后更改的。如果数据库比较小,改动比较频繁的话,可以把这个频率设为x分钟。

4、Snapshot Agent Security。必须配置windows账号和SQL server账号,这里一定要填入有效的主机名和密码,一般是本机,格式为“CHINA\MyComputerName”。因为这是在写快照文件时候用到的账号和密码,连接publisher的也要设置SQL Server login名字和密码,一般就是本地的sa和其密码。这个在设置Subscriber的时候也填入同样的sa信息。

5、在配置过程中可能不会出现让你选择存放快照文件夹的选项,这样配置完之后快照是存放在其默认的文件夹的。右键点击配置好的Local Publications,点击“Snapshot”,选择将文件放在之前建好的共享文件夹中(比如上文说的“//10.10.10.10/SnapData”),不勾选默认的位置。

三、配置Subscriber

1、选择publisher是不能用ip连接的,必须用主机名。那么先在“C:\WINDOWS\system32\drivers\etc”中的hosts文件中添加publisher的信息,格式是“ip 主机名”,比如“10.10.10.10 PublisherName”。填入publisher数据库的SQL Server用户名和密码来连接。

2、选择要订阅的出版物(publications),选择push subscriptions模式还是pull subscriptions模式,这里选择pull,原因上文已有说明。

3、选择要订阅该出版物的数据库,即要更新的数据库。

4、在Distribution Agent Security界面,必须配置windows账号和SQL server账号。配置windows账号:和配置publisher的Snapshot Agent Security里的内容类似,填入本机的有效账号和密码,SQL Server 账号填入跟publisher的Snapshot Agent Security里一致的信息。

5、可能也没有让你选择存放快照文件夹的选项,需要在配置后更改。右键点击建立的Local Subscriptions里的订阅,将Snapshot location改为“Alternate folder”,在Snapshot folder中填入publisher里填的存放快照文件的文件夹,比如“//10.10.10.10/SnapData”,必须确保一致而且都有相关的权限,否则会出错。

6、将Synchronization里的属性设为Enable的,这样在同步的时候才不会出错。

四、对Subscriber的订阅进行初始化,然后再Publisher中进行初始化订阅,可以启动Publisher的监视器来查看订阅的执行情况。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: