目的很简单就是要实现读写分离,目前用的是sql复制和Q复制。
一直想实现从DB2复制到mysql,可目前商业的软件可选择的不多,我只知道GoldenGate可以,目前已经被Oracle收购了,收费挺高,而且license跟机器绑定,NND想盗版都不行。大规模使用价格不菲,背离了目标之一成本。
最后打算自己写程序实现,可咱是运维出身,以前学的编程知识都忘的差不多了,每次申请个开发的兄弟,总是说人手紧张,暂时不行。
有开会讨论的时间,活都能干完了。一硬头皮自己来。
到今天差不多2个月,除去其他活,写程序有一个月多时间,还好今天测试比较顺利。第一期目标实现。后面完善功能以方便使用。
心情舒畅发个帖庆祝庆祝。
大家表鄙视俺
[@more@]
程序用C++实现。初始使用的是java,但在测试中发现占用资源较大,后用C++重写,目前资源的占用较低比较理想。
实现复制不外乎两种方法:
1 事务日志解析
2 trigger
其中trigger实现起来较简单,但是个人是绝对不建议使用的。但凡对DB2有所理解的都知道这个东东的厉害,不多说了。除非是很闲的系统,才建议考虑。
事务日志解析对源端的压力小,是最好的方式,但解析事务日志需要对事务日志有比较多的理解。
我用的是解析事务日志的方法。
整个实现分为3个部分:
1 源端事务日志解析
2 传输及通讯
3 数据转换及导入目标
db2和mysql或者其他数据库的数据格式很可能不同,需要仔细分析格式差别并转换。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/598443/viewspace-1052454/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/598443/viewspace-1052454/