1.canal简介
canal是阿里巴巴旗下的一款开源项目,纯Java开发。基于数据库增量日志解析,提供增量数据订阅&消费,目前主要支持了MySQL(也支持mariaDB)。
原理相对比较简单:
- canal模拟mysql slave的交互协议,伪装自己为mysql slave,向mysql master发送dump协议
- mysql master收到dump请求,开始推送binary log给slave(也就是canal)
- canal解析binary log对象(原始为byte流)
2.架构图
3.系统落地
由于canal 自带消息中间件:支持kafka RocketMq 两种消息队列,我们只需要让运维帮忙配置,你编写一段代码监听kafka消息,将数据写入es即可。