ChinaUnix首页 > 精华文章 > Sybase > 正文

[精华] 使用Sybase RS MSA创建一对多数据库复制


http://www.chinaunix.net 作者:sybfresher  发表于:2009-02-03 12:22:24
发表评论】 【查看原文】 【Sybase讨论区】【关闭

最近在学习Sybase的RS,在坛子里学习了几篇有关RS复制的文章,受益非浅。这两天我也尝试着使用RS 的MSA来创建一对多的复制环境,把过程记录了下来,不敢独享,也许会对像我一样初学RS的TX有所帮助。愿各位高手少点拍砖,多些指正。MSA可以做很多事情,包括:1。一对多的数据库级别复制 2。一对多的Warm tandby 3。一对多的表级复制。本文只做了第一点的尝试(数据库的一对多单向复制),如果建立一对多的Warm Standby,需要稍微改动一下,使之双向复制。
1. 系统环境:Replication Server 15.1, ASE 15.0.2
2. 主点:SA.test,备点1:SB.test2,备点2:SC.test3,复制服务器主机为RS,复制服务器名字为RST4
3. 在复制服务器的interfaces文件中增加:
SA
        master tcp ether SA 5000
        query tcp ehter SA 5000

SB
        master tcp ether SB 5000
        query tcp ehter SB 5000


RST4_ERSSD #用于RS的嵌入式RSSD
        master tcp ether RS 7992
        query tcp ether RS 7992

SC
        master tcp ether SC 6000
        query tcp ether SC 6000

RST4
        master tcp ether RS 5005
        query tcp ether RS 5005

在三个ASE服务器的interfaces文件中分别增加复制服务器和其他ASE服务器的接口信息。

4. 在复制服务器上使用rs_init配置复制服务:
首先在/opt/rep151/data目录下touch一个文件名rs151RST4.dat。
Replication Server Name:  RST4
Is this Replication Server the ID Server?  Yes
Do you want Replication Server System Database embedded: yes
ERSSD Name:  RST4_ERSSD
Disk Partition path:  /opt/rep151/data/rs151RST4.dat
Logical Identifier for Disk Partition:  RST4Part

5. 增加主点:
Replication Server Name:  RST4
SQL Server name:  SA
Database name:  test
Will the database be replicated:  yes

6. 增加备点SB:
Replication Server Name:  RST4
SQL Server name:  SB
Database name:  test2

7. 增加备点SC:
Replication Server Name:  RST4
SQL Server name:  SC
Database name:  test3

8. 在主点执行:
1> use test
2> go
1> sp_reptostandby test,'all' 
2> go
1> sp_config_rep_agent test,"send warm standby xacts","true"
2> go

9. 在RS上执行:
1> create database replication definition repdef_1 with primary at SA.test
2> go

1> create subscription sub_1 for
2> database replication definition repdef_1
3> with primary at SA.test
4> with replicate at SB.test2
5> without materialization
6> subscribe to truncate table
7> go

1> create subscription sub_1 for
2> database replication definition repdef_1
3> with primary at SA.test
4> with replicate at SC.test3
5> without materialization
6> subscribe to truncate table
7> go

10. 由于此时我不需要同步主、备数据库的内容,因此我没有使用dump/load命令把主库的数据同步到两个备库,此时仍需要将备库与主库的同名用户的uid保持一致。如果使用dump/load,就需要注意用户名的问题:将备库增加到复制系统后,复制服务器会自动在备库增加一个维护帐户,例如SB.test2中会增加一个名为test2_maint的user。将主库的数据load到备库后,sysusers里的数据将被覆盖,因此需要手工增加该用户,并注意suid与uid的对应关系。
也可以使用bcp来进行同步。

11. 在SB执行:
1> grant role sa_role to test2_maint
2> go

12. 在SC执行:
1> grant role sa_role to test3_maint
2> Go


13. 在SA.test、SB.test2、SC.test3中执行:
1> create table t1(c1 int)
2> go

在SA.test中执行:
1> insert into t1 values(10)
2> go
如果一切顺利,数据将会被复制到2个备点中。但此时并没有复制DDL,如果想复制DDL,可以在RS中修改复制定义:
1> alter database replication definition repdef_1
2> with primary at SA.test
3> replicate DDL
4> go

然后在主库中执行:
create table t2(c2 int)
过一会儿后t2就会被复制到两个备点了。

[ 本帖最后由 sybfresher 于 2008-12-10 22:42 编辑 ]



 echoaix 回复于:2008-12-11 10:19:19

不错,加精


 sybfresher 回复于:2008-12-11 20:34:52

呵呵,从斑竹以前的帖子中获益匪浅,也感谢斑竹的支持。。。。。。。。。。。。。。。。。。


 Eisen 回复于:2008-12-15 15:03:21

不错。赞一个
补充一点——其实关于那个用户问题不用太关注。只要在两边master..syslogins里面, test1_maint和test2_maint的suid一样就没有任何问题了——因为权限是赋给public组的,虽然对应的login name不同,不过suid一致,那么可执行权限也无区别。


 pfj2008 回复于:2009-01-23 23:06:14

我现在也想安装使用sybase复制服务器
但在安装介面出现乱码
不知是版本问题还是什么问题
我现在有的数据库是sybase 11.9 装在Win2000上的
请指点
另:哪里有安装程序下载


 pfj2008 回复于:2009-01-23 23:07:56

本人QQ15798850,感激万分!


 Eisen 回复于:2009-02-02 14:36:54

引用:原帖由 pfj2008 于 2009-1-23 23:06 发表 [url=http://bbs.chinaunix.net/redirect.php?goto=findpost&pid=9988021&ptid=1331408]
我现在也想安装使用sybase复制服务器
但在安装介面出现乱码
不知是版本问题还是什么问题
我现在有的数据库是sybase 11.9 装在Win2000上的
请指点
另:哪里有安装程序下载 


什么版本?


 WFCJZ 回复于:2009-02-03 12:22:24

需要,楼主好人!




原文链接:http://bbs.chinaunix.net/viewthread.php?tid=1331408
转载请注明作者名及原文出处