|
实用技巧
在异构环境中数据库复制技术的实现方法
华中理工大学电力技术研究所
沈宇亮
----
在企业级的网络环境中,异种操作系统同时并存的现象越来越普遍地存在,在部门级服务器中采用微软的NT服务器,企业的总服务器采用unix服务器。在许多系统集成的方案与实施中屡见不鲜,在不同操作系统之间运行的数据库内容的共享是一个普遍令人关心的问题。在这里介绍各大数据库均使用的复制技术实现数据向中心汇集,并可方便地实现集中式备份。实现的实例是SQL SERVER 6.5向SYBASE 11.9.2 for SCO unix复制。
----
1. 操作环境介绍
----
1) NT 4.0中文版 SP4
服务器名:dls
SQL SERVER 6.5
数据库: pubs, comm
SYBASE OPEN CLIENT 11.9.2
----
2) SCO unix 5.03
服务器名: jc
Sybase 11.9.2 for SCO unix
数据库: pubs2
----
3) 网络间的通讯协议: TCP/IP
----
2. 复制拓朴 (图略)
person的表结构
CREATE TABLE dbo.person(
Id int NOT NULL,
Name Varchar(10) NOT NULL,
CONSTRAINT PK_person PRIMARY KEY CLUSTERED( id )
)
----
3. 复制的操作步骤
----
1) 以管理员身份的用户启动MSSQL SERVER 及 SQL EXCUTIVE 服务。
----
2) 使用SQL Enterprise Manager/Replication Configureation / install publishing制作分发数据库distribution,实验时取数据设备为15M,日志设备为5M。
----
3) 在NT上使用Sybase Central建立一个名为Sybase的服务器,用于联接unix服务器上的SQL SERVER并调通。
----
4) 在NT服务器上使用第三步建立的服务器建立一个名为Sybase的ODBC 数据源用来联接unix服务器。
----
5) 使用SQL Enterprise Manager/Replication Configuration/Publish设置pubs为出版数据库,并设置两个订阅服务器,一个为dls,另一个为ODBC Subscriber,选择已定义好的sybase数据源,并提供登录用户及登录密码。
----
6) 使用SQL Enterprise Manager/Replication Configuration/Subscribe设置本地的COMM库为订阅数据库。
----
7) 设置完后NT显示的复制拓朴图如下所示:(图略)
----
8)设置向本机复制使用的出版物pub_nt其中包括一篇出版文章为person
----
9) 以同样的方法设置向unix服务器的复制使用的出版物pub_unix,注意进行设置时Synchronization选项卡中的initial Synchronizaton的method 为Bulk Data Copy – Character Format ( Compatibility )
----
10)把pub_nt的内容发向dls的comm数据库,同步的类型可以选为手工同步,自动同步或不同步中的任意一种。
----
11)把pub_unix的内容发向sybase服务器的pubs2数据库,同步的方法只能设为不同步(No Data Synchronization )
----
12)向NT的pubs数据库中插入三行数据。
Insert person values( 1, ‘a’ )
Insert person values( 2, ‘b’ )
Insert person values( 3, ‘c’ )
----
13)查看NT的distribution库中msjob_commands表内容,发现SQL SERVER日志读任务可以完整地记录下对数据库的操作。列表如下:
publisher_id publisher_db job_id
command_id art_id incomplete command
------------ -------------- ---------------------
0 pubs 14 1 6
0 insert into "person" values (1, 'a')
0 pubs 14 2 7
0 insert into "person" values (1, 'a')
0 pubs 15 1 6
0 insert into "person" values (2, 'b')
0 pubs 15 2 7
0 insert into "person" values (2, 'b')
0 pubs 16 1 6
0 insert into "person" values (3, 'c')
0 pubs 16 2 7
0 insert into "person" values (3, 'c')
----
14)查看二个目的数据库中的person表,看新插入的记录是否成功地把表内容复制到目的表中,如没有则需要看分发任务(任务类型为distribution)的执行情况。依据错误提示进行修改。常见的操作可能是服务器未联上或延时错误等。
|