愚公oracle数据库同步工具

最近,利用一些时间对oracle数据库实时同步工具做了一些调研分析,主要关注了linkedin的databus和阿里的yugong两个中间件,其中databus需要在每个待同步的表上增加额外的列和触发器来实现,方案比较重,本文将着重分析一下阿里的yugong实现方案及给出分析调研报告。

1.yugong实时同步原理

   使用了oracle的物化视图日志功能,类似于一个内部的触发器,原表的数据库需要对用户授权具有物化视图日志的创建和删除权限,关于物化视图日志的详细描述,可以参考下面的文章:

   http://blog.csdn.net/tianlesoftware/article/details/7720580

2.性能测试

   a.在测试环境1的原表(TEST_SOURCE)新生成300万数据

   b.为不影响开发环境的数据,修改yugong代码,将目标表改为TEST_SOURCE_BAK

   c.启动yugong服务,开始同步数据

   d.经过1.5小时,同步完所有增量数据

3.数据延时测试

  a.分别手动对原表数据进行了增改删操作,10秒钟内可以实现数据同步

  b.在目标库中新增一列,类型为时间类型,默认值为当前时间

  c.使用脚本反复在原库中生成一批数据(50条为一批)

  d.所有数据的延迟时间都在30秒以内

4.数据完整性测试

  a.手工随机抽查数据,对比同一条记录的各个列值,数据都是一致的

  b.使用jdbc抽出特定的记录集合,使用md5函数,md5结果一致

5.其它测试用例

  a.原表增加字段,而目标表不增加,数据正常同步

  b.目标表先增加字段,原表不增加字段,数据正常同步

  c.原表和目标表同时增加字段,服务需要重新启动后才可以进行数据同步

  d.无主键测试,yugong不支持无主键同步

  e.主键为多列测试,可以正常同步

  f.yugong服务连续运行72个小时,中间出现过一次同步中断,原因不明

  g.物化视图日志在事务中rollback时,会同步rollback

  h.目标表将某条记录删除,原表将此记录更新,此记录会重新同步到目标表

6.yugong分析

  a.代码简洁,分为extractor(提取)、translator(翻译)、applier(更新到目标库)三个部分

  b.只有一个服务,无其它第三方依赖

  c.原理简单,可以按照我们的意图来更改代码

转载于:https://www.cnblogs.com/mantu/p/7076849.html

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值