12
返回列表 发新帖
楼主: aqiangcheng

[原创] db2数据库两个实例之间的复制方案

[复制链接]
论坛徽章:
26
2010广州亚运会纪念徽章:拳击
日期:2011-03-26 16:08:102015年新春福章
日期:2015-03-06 11:57:31双鱼座
日期:2015-07-11 17:58:35水瓶座
日期:2016-01-26 08:42:30白羊座
日期:2016-03-19 09:03:26妮可·罗宾
日期:2016-09-30 14:36:33山治
日期:2016-11-08 20:12:34蒙奇·D·路飞
日期:2018-08-23 15:20:57乌索普
日期:2019-10-27 12:00:10弗兰奇
日期:2020-09-30 16:35:20
11#
发表于 2014-5-17 21:46 | 只看该作者
可以使用oracle goldengate进行数据复制

使用道具 举报

回复
论坛徽章:
1
技术图书徽章
日期:2014-01-24 10:18:55
12#
发表于 2014-7-9 22:36 | 只看该作者
DB2方面,DB2 + Q-Replication + MQ是比较成熟和高效的解决方案。如果是大公司,请考虑,因为软件的成本应该不是问题。关键是高自动化程度和稳定安全性。
Oracle方面,Oracle+QRep+MQ也是很流行的方案。

两个独立系统,MQ还是相对最好的,而且如果有Mainframe几乎就推荐这个MQ了,别绕开,多一两个懂MQ的人在大公司里或者外包给IBM其实省很多事情,别什么底层都自己去刨,数据库专家,核心价值和利益还是在数据本身。

我心目中有这样一竿秤:
 数据库方案的总价值=60%数据本身的价值+40%的相关软硬件价值(包括数据库中间件)

如果是小成本的应用,就直接使用数据库自带的Replication方案吧,比如DB2自己的SQL Replication等等,自己看看相关数据库自己的Replication solution文档,应该比较全的。

使用道具 举报

回复
求职 : 数据库管理员
论坛徽章:
32
生肖徽章2007版:狗
日期:2009-07-20 17:10:18茶鸡蛋
日期:2013-05-23 16:34:43茶鸡蛋
日期:2013-07-19 14:39:22ITPUB社区千里马徽章
日期:2013-08-22 09:58:03雪铁龙
日期:2013-08-23 13:04:11林肯
日期:2013-09-04 14:07:20兰博基尼
日期:2013-09-16 13:45:20马上有钱
日期:2014-05-14 14:07:392014年世界杯参赛球队: 波黑
日期:2014-07-03 13:24:39马上有对象
日期:2014-10-30 14:04:32
13#
发表于 2014-7-14 16:54 | 只看该作者
也可以考虑使用IBM的CDC在2个实例间复制数据。

使用道具 举报

回复
论坛徽章:
6
ITPUB十周年纪念徽章
日期:2011-11-01 16:26:29ITPUB 11周年纪念徽章
日期:2012-10-09 18:16:002013年新春福章
日期:2013-02-25 14:51:24海蓝宝石
日期:2014-08-06 14:09:322015年新春福章
日期:2015-03-04 14:53:162015年新春福章
日期:2015-03-06 11:58:39
14#
发表于 2014-7-21 08:14 | 只看该作者
如果你的企业有很多种类的数据库需要做复制,可以用CDC,如果企业主要就DB2需要复制,用复制服务器就很好,采取Q复制和SQL复制都可以,并且现在支持模式复制,所以配置非常简单了。

使用道具 举报

回复
论坛徽章:
0
15#
发表于 2014-7-31 22:07 | 只看该作者
正好我也遇到类似问题,顺便讨论下,我是需要做个读写分离,比较直接的想法就是双库,然后进行T-1的同步,为提高性能初次全量,以后每天增量;
这里涉及两个问题:
1、同步怎么实现比较高效稳定,shell脚本、触发器还是其他?
2、读写的两台机器如何做负载?

使用道具 举报

回复
论坛徽章:
1
技术图书徽章
日期:2014-01-24 10:18:55
16#
发表于 2014-8-5 23:08 | 只看该作者
danni505 发表于 2014-7-31 09:07
正好我也遇到类似问题,顺便讨论下,我是需要做个读写分离,比较直接的想法就是双库,然后进行T-1的同步,为 ...

这是一个很有价值和意义的话题,在大公司里应该是比较值钱的。

不知道你是否只是完全的replication的简单复制,还是相对复杂的先Replication然后在此基础上适当的有Propagation。

一。两个Instances之间要实现高效稳定同步,一般是写在replicated的表上写trigger然后调用STORE PROCEDURE做downstream的propagation or data sync
二。根据并发需求和实际情况,可以考虑downstream update实时的更新或者延迟更新。通常考虑建立辅助表,把延迟或者实时更新出错的放在新表里,做调查或用Shell script在数据库之外另行处理。当然这些事根据你应用的复杂程度来。有很多复杂的应用,使需要延迟而不是实时处理的。同时可以在此适当增加validation之类的。
三,DB2读写分离要看你用的版本,V9.7以前,最好的是HADR, 配成read only standby。或者是用remote instance gateway创建Schema Alias做简单的balancing或db2 auto client reroute。V9.8之后就采用Purescale自动读写平衡。这个可以是另外一个大的话题。

:-)

使用道具 举报

回复
论坛徽章:
0
17#
发表于 2014-8-10 22:16 | 只看该作者
mingongyi 发表于 2014-8-5 23:08
这是一个很有价值和意义的话题,在大公司里应该是比较值钱的。

不知道你是否只是完全的replication的简 ...

首先感谢你的跟帖;

“一。两个Instances之间要实现高效稳定同步,一般是写在replicated的表上写trigger然后调用STORE PROCEDURE做downstream的propagation or data sync”
对于这个,如果部署在多台机器上,存储过程还行吗?感觉得用文件系统+shell来实现;

其实上面还只是解决了数据同步,一致性的问题,可以有一定的延迟;
那么读写分离,以及如何对接上层应用?就如mysql数据库方面的中间件Amoeba,我们DB2是V9.7,用HADR配成read only standby是可以的,但如何分配前端应用过来的请求?DB2数据库好像没有相配套的解决方案,难道非要侵入到应用层,在框架里设置相关的数据源以区分?
还是对SQL请求进行分析、路由?

:-)

使用道具 举报

回复
论坛徽章:
0
18#
发表于 2014-8-10 22:36 | 只看该作者
mingongyi 发表于 2014-8-5 23:08
这是一个很有价值和意义的话题,在大公司里应该是比较值钱的。

不知道你是否只是完全的replication的简 ...
三,DB2读写分离要看你用的版本,V9.7以前,最好的是HADR, 配成read only standby。或者是用remote instance gateway创建Schema Alias做简单的balancing或db2 auto client reroute。V9.8之后就采用Purescale自动读写平衡。这个可以是另外一个大的话题。


这个好像本质上还是解决负载的事情,读写分离可能需要解决的是“路由”的问题,DB2数据库里如果不能自动识别请求是查询还是其他,那么就似乎解决不了这个问题;
或者要把识别读和写的动作放到应用层面去解决了,个人一时也没想到有什么好的解决方案。

使用道具 举报

回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 未成年人举报专区 
京ICP备16024965号-8  北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表