想把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方案