[原创] 复制定义导出和生成器,兼调查一下 |
|
| 来源 chinaunix.net 酷勤网整理 |
看看这里有多少兄弟使用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
小无赖 回复于:2006-03-10 17:05:17
引用:原帖由 Eisen 于 2006-3-10 15:53 发表
头几年自己不会用复制的时候,经常出错,这几年问题不是很多了。
苏宁电器全国连锁用的就是复制嘛……你看它每天的数据增量有多少啊?
看来sybase的复制要几年才能出师啊.呵呵!
要向lz多学习.
Eisen 回复于:2006-03-10 17:10:38
复制其实真是个好东西,不光同质同构的数据库,就连异质异构的,甚至32位和64位间的都能互通,而且最妙的是还不会锁表影响正常生产应用,其实操作也不难,就是因为用的人太少,所以显得难以捉摸了。
欢迎交流。
[ 本帖最后由 Eisen 于 2006-3-10 17:12 编辑 ]
Eisen 回复于:2006-03-14 20:03:22
又修改一个bug,修正在create replication definition的时候遇上non-clusterd primary key时会遗漏一column的问题。
eisen.rar
2BeSybPro 回复于:2006-04-05 23:20:57
"我从不采用整库复制——除非把数据和脚本彻底剥离。
因为采用database replication的时候,A上执行过一次trigger把数据加了几条,B上也会同样执行该trigger增加这几条数据,然后A上增加的那几条数据又给传过来了——然后就造成了重复数据.我吃过这个苦头。"
Wrong!!!
By default, the standby DSI thread executes a set triggers off Adaptive Server command when it logs in to a standby database. This prevents Adaptive Server from firing triggers for the replicated transactions, thereby preventing duplicate updates in the standby database.You can alter the default behavior by using the alter connection command to configure a connection to fire or not fire triggers. To do this, set the dsi_keep_triggers configuration parameter to “on” or “off.” The default dsi_keep_triggers setting for all connections except standby databases is “on.”
fwzhuo 回复于:2006-04-06 16:01:28
感谢Eisen,复制用了怎么久,感觉sybase的复制还是挺好用的,现在就是缺少一个很好的导复制定义的语句。用RSM管理器有时导出来的语句,再回去执行的时候,就用不起了。
Eisen 回复于:2006-04-10 17:57:05
引用:原帖由 2BeSybPro 于 2006-4-5 23:20 发表
"我从不采用整库复制——除非把数据和脚本彻底剥离。
因为采用database replication的时候,A上执行过一次trigger把数据加了几条,B上也会同样执行该trigger增加这几条数据,然后A上增加的那几条数据又给传过来 ...
Thanks a lot.
lg068 回复于:2006-04-11 09:21:03
要是能做一个故障排除指南的软件就好了,很多错误日志,不知该怎么办?排错手册我已经发给你了
Eisen 回复于:2006-04-11 10:08:46
我一开始也想做错误分析和故障排除自动处理的。
后来发现sybase没提供rep的jdbc编程接口,我这可就没法了。
你不会把整个trouble shooting发到我信箱去了吧……那要把我的信箱撑爆的啊。
Eisen 回复于:2006-05-23 16:20:34
呼……借地发个牢骚——总算把苏宁项目作完了,终于给释放了,终于可以把我这个小工具写完了。
现在找到一个小小的ftp空间,不算快,但也能凑合着用,请有兴趣的同行们到这里来下载
ftp://temp:no1190temp@211.148.7.34/rep_tools.rar
另:新的功能实现,在rep maker程序中添加了导出user defined function string的功能。
[ 本帖最后由 Eisen 于 2006-5-23 21:01 编辑 ]
tdhlu 回复于:2006-05-23 18:05:09
下不了
Eisen 回复于:2006-05-23 21:01:42
噢。不好意思,不是rep-tools.rar而是 rep_tools.rar
现在可以下了
yoof 回复于:2006-05-29 11:09:09
[email]bpsm_yoof@163.com[/email]
楼主给我来一个,谢谢
ctpyy_11 回复于:2007-01-03 17:49:03
楼主也给我一个([email]ctpyy_1@yahoo.com.cn[/email]),现在怎么下不下来?
ctpyy_11 回复于:2007-01-05 15:54:15
楼主还是下不起呀?
ctpyy_11 回复于:2007-01-05 18:01:14
密码无效
|
 |
原文链接:http://bbs.chinaunix.net/viewthread.php?tid=710121
转载请注明作者名及原文出处
|
|
|