首页 > 数据库技术 > 详细

[canal数据库同步]基于canal的实时数据同步

时间:2020-04-21 21:24:42      阅读:326      评论:0      收藏:0      [点我收藏+]

  使用canal做数据备份而不用mysql自带的主从备份的场景主要为:

  跨数据库的数据备份,例如mysql=> oracle

  数据异构,即对同一份数据做不同的分库分表查询。例如卖家和买家各自分库索引

  单机单点消费mysql的log-bin后直接更新到备份数据库中,数据一致性没有问题。但是如果变成分布式环境以及消费mysql的log-bin后将更新数据推到MQ中由多节点消费更新到多个备份数据库中,则会出现数据更新时序和数据一致性的问题。

  而以上代码在update sql中除了获取值变化了的字段,也反查数据库获取了未变化的字段。因此每次update的sql实际上是该条记录的全量数据。

  通过在表中加上时间戳字段作为记录的版本号,用逻辑删除取代物理删除delete,修改以上代码的sql拼接,insert操作时忽略主键冲突、update操作时仅更新版本号(时间戳)旧的记录,可以极大避免数据不一致的现象,也解决了MQ重复消费的问题。

  再通过定时任务,每天一次增量数据更新,每周一次全量数据更新,保证数据的最终一致性。

 数据库同步软件

[canal数据库同步]基于canal的实时数据同步

原文:https://www.cnblogs.com/sqlserver-mysql/p/12747528.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!