技术资料首页 >> 数据库专栏 >> Sybase专栏 >> 复制定义导出和生成器,兼调查一下

复制定义导出和生成器,兼调查一下 (1)

2007-03-20 13:47:18作者: 来源:http://www.chinaunix.net/jh/21/710121.html 浏览次数:9 文字大小:【】【】【

看看这里有多少兄弟使用Sybase的Replication Server?
小弟我最近写了个复制定义的导出和生成的小工具,不敢藏私,想请同道们使用指点。
先看看有多少人用Replication Server的。

[ 本帖最后由 Eisen 于 2006-3-6 18:15 编辑 ]



 hobbylu 回复于:2006-03-03 08:05:27

哦,很不错啊


 REDMOB 回复于:2006-03-03 09:31:44

看来兄弟写了个好东西啊,是不是分享一下


 Eisen 回复于:2006-03-03 14:16:41

想要的给我发信
[email]d ic kapfel
@ citiz.net[/email]

[ 本帖最后由 Eisen 于 2006-6-8 06:31 编辑 ]


 echoaix 回复于:2006-03-03 19:25:23

我报个到,顶,好好学习
[email]liuhai01@beelink.com[/email]


 2BeSybPro 回复于:2006-03-03 22:28:14

Thanks, man,
You can also find replication definition scripts in Sybase under CodeExchange.


 Eisen 回复于:2006-03-04 16:18:31

rep creator用于从ASE数据库中萃取表结构和主码生成复制定义,并校验所选列是否包含所有的主键列和
搜索列中是否并非复制列,且能根据需要关闭某方向的insert,delete或update操作以避免在某些特定情况
下造成的双向复制表死循环。
rep creator使用方法:
1. 需要有jre1.4以上环境,将eisen.jar添加进classpath,运行repcreator.bat
2. 填入源数据库所在ASE的ip和port及sa的密码
3. 点击"Next"进入复制定义生成器主界面
4. 在Primary下拉框中选择复制源数据库
5. 填写复制目标server和数据库名,写法——servername.databasename
例如要向 ASE1上的 db2 复制数据则该栏应填 ASE1.db2
6. 根据实际需求选择"Auto filtered table named lastmodified"
如果选中,则将自动从复制列中滤掉所有形如lastmodified或last_modified的字段
如果不选则不作过滤
7. 点击"List"
8. 选择需要复制的表名,该表的所有字段将自动显示在columns栏
9. 在column栏将不需要复制的列去掉,保持格式为 col1[,colname]
例:需要复制的列为 col1,col2,col4,不需要复制的列为col3,col5
则最后在该栏写为 col1,col2,col4
10.如果该表需要条件复制,则在search columns栏填入复制条件,保持格式为 exp1[,exp pattern]
例如:复制条件为 col1=2和col2='20020216'
则写为 col1=2,col2='20020216'
11.设定该方向的复制是否需要关闭该方向的insert,delete或update
如果该操作不需要复制则取消该框前的复选框。
12.点击"Create"可先后生成复制定义,复制预定和赋权语句


 Eisen 回复于:2006-03-04 16:23:27

repmaker用于从现有的复制系统的rssd库中分析萃取出已经有效的复制定义——常用于复制系统
的崩溃救险。无论在主点或是复制点上,只要有1个rssd库还是好的,就能取出其中的复制定义。

repmaker使用方法:
1. 需要有jre1.4以上环境,将eisen.jar添加进classpath,运行repmaker.bat
2. 填入复制系统所使用的rssd库所在ASE的ip,端口和sa的密码
3. 点"Next"
4. 选择该复制系统的rssd库和所要导出的复制的源(From)和目标库(To)
5. 选择所要生成脚本的类型——复制定义,预订或赋权语句.
6. 点击"Go"

[ 本帖最后由 Eisen 于 2006-3-4 16:25 编辑 ]


 echoaix 回复于:2006-03-06 07:58:04

水平那是相当的高


 Eisen 回复于:2006-03-06 13:50:45

请注意更换这个文件.
修改了一个bug,同时在rep creator中添加兼容当源表和目标表的表名不同的时候也可生成复制定义的功能。

eisen.rar


 Eisen 回复于:2006-03-06 13:51:51

引用:原帖由 echoaix 于 2006-3-6 07:58 发表
水平那是相当的高 


不敢不敢。还请指教


 fbirds 回复于:2006-03-06 15:15:35

水平真是相当的高啊。。。。


 Eisen 回复于:2006-03-08 15:01:16

请教一下,有谁知道怎么把复制定义的function string是存在rssd库什么地方的吗?


 li_lsl 回复于:2006-03-08 15:34:24

厉害,不过我用的“温备份”,是不是就需要这个工具?


 Eisen 回复于:2006-03-09 11:01:21

引用:原帖由 li_lsl 于 2006-3-8 15:34 发表
厉害,不过我用的“温备份”,是不是就需要这个工具? 


热备是肯定需要的。温备也可以用复制来实现。


 hobbylu 回复于:2006-03-09 11:19:46

说句实话,备份也不需要这么麻烦,直接做个DUMP就可以了,呵呵


 Eisen 回复于:2006-03-09 11:32:23

dump-load有时间差的,还有user id的滑动问题,用复制就是实时的了。


 小无赖 回复于:2006-03-09 14:35:30

我感觉sybase的复制好复杂哦,还要一个一个表的去定义,太麻烦了.我想了解一下大家在使用复制的时候是复制的几个表还是整个库的复制,如果整个库的复制的话,有1000张表的库要一个表一个表定义复制不是要累死了.


 Eisen 回复于:2006-03-09 16:10:37

引用:原帖由 小无赖 于 2006-3-9 14:35 发表
我感觉sybase的复制好复杂哦,还要一个一个表的去定义,太麻烦了.我想了解一下大家在使用复制的时候是复制的几个表还是整个库的复制,如果整个库的复制的话,有1000张表的库要一个表一个表定义复制不是要累死了. 


我从不采用整库复制——除非把数据和脚本彻底剥离。
因为采用database replication的时候,A上执行过一次trigger把数据加了几条,B上也会同样执行该trigger增加这几条数据,然后A上增加的那几条数据又给传过来了——然后就造成了重复数据.我吃过这个苦头。

所以我专门写了这两个小工具也是给自己平时工作方便用的,一下子就能把整个库的所有表都设为复制了。


 小无赖 回复于:2006-03-10 15:16:46

引用:原帖由 Eisen 于 2006-3-9 16:10 发表

我从不采用整库复制——除非把数据和脚本彻底剥离。
因为采用database replication的时候,A上执行过一次trigger把数据加了几条,B上也会同样执行该trigger增加这几条数据,然后A上增加的那几条数据又给传过来了— ... 




你一般应用的复制数据库有多大?每天数据的增量有多大?我在做实验的时候数据量一大就出问题了,非常的不稳定.


 Eisen 回复于:2006-03-10 15:53:08

引用:原帖由 小无赖 于 2006-3-10 15:16 发表
你一般应用的复制数据库有多大?每天数据的增量有多大?我在做实验的时候数据量一大就出问题了,非常的不稳定. 


头几年自己不会用复制的时候,经常出错,这几年问题不是很多了。
苏宁电器全国连锁用的就是复制嘛……你看它每天的数据增量有多少啊?


 Eisen 回复于:2006-03-10 16:57:13

又更新了一个bug

eisen.rar


 
[1] [2]

相关文章