想把MySQL有变更的数据分发到其他异构数据库,都有什么可选方案。

想把MySQL有变更的数据分发到其他异构数据库,都有什么可选方案。


一、触发器方式(不推荐)
1、触发器处理的方式,在表上建立触发器,将增删改动作捕捉到增量表。


二、基于时间戳
1、表上如果有更新时间/插入时间的时间戳,可以根据时间戳捕捉增量数据。


三、基于binlog方式(推荐)
MySQL目前比较好也是目前业务用的比较多的增量方案都是基于binlog实现。
1、在MySQL提交的DML操作正常情况都会记录到binlog(也是主从复制的基础),首先上游通过解析binlog获取到增量日志。
2、将解析到的更新事件存入消息队列,如kafka/MQ等。
3、根据下游数据库种类,分别用不同的消费组件进行队列消费,拼接成SQL进行数据更新。


四、业界典型的方案
开源方案
    1、阿里巴巴开源组件canal+kafka+自写消费组件
    2、阿里巴巴开源组件otter(支持MySQL到MySQL的数据同步)
    2、阿里巴巴开源迁移工具yugong(支持Oracle->Oracle/Oracle->MySQL的全量/增量迁移)
    3、linkedin开源组件databus
    4、美团点评开源组件puma
商业方案
    1、各云厂商提供的DTS方案

 

posted @ 2020-06-16 16:43  捧花大王  阅读(289)  评论(0编辑  收藏  举报