Canal是阿里的开源工具,用于同步MySQL数据库变更。
可以监听数据库的变化,从而获取新增数据,或者修改的数据。
Canal在项目中用于数据增量同步操作,可以将数据同步到redis,其他MySQL,ES等。
mysql主从复制实现:
- 主服务器将更改记录到binlog中(这些记录称为binlog事件,可以通过来查看
show binary events
) - 从服务器将主服务器的二进制日志事件复制到其中继日志。
- 中继日志中的从服务器重做事件将随后更新其旧数据。
canal运作原理:
- Canal模拟MySQL从站的交互协议,伪装成MySQL从站,然后将转储协议发送到MySQL主服务器。
- MySQL Master接收到转储请求,并开始将二进制日志推送到slave(即运河)。
- 运河将二进制日志对象解析为其自己的数据类型(最初为字节流)。