阿里开源中间件 Canal 实现 MySQL 增量数据同步

github 地址:https://github.com/alibaba/canal

Canal,译意为水道/管道/沟渠,主要用途是基于 MySQL 数据库增量日志解析,提供增量数据订阅和消费。
Canal的工作原理就是把自己伪装成 MySQL Slave,模拟 MySQL Slave 的交互协议向 MySQL Mater 发送 dump协议,MySQL Mater 收到Canal发送过来的dump请求,开始推送binary log给Canal,然后Canal解析binary log,再发送到存储目的地,比如 MySQL、Kafka、Elastic Search 等等。但是Canal的数据同步不是全量的,而是增量。
基于binary log增量订阅和消费,Canal可以做:
1、数据库镜像
2、数据库实时备份
3、索引构建和实时维护(拆分异构索引、倒排索引等)
4、业务 cache 刷新
5、带业务逻辑的增量数据处理