部分内容摘自【基于Canal和Kafka实现MySQL的Binlog近实时同步 - 掘金】
大致流程
canal将binlog转到连接器kafka,接收方订阅topic消费后更新redis或es
canal工作原理
canal伪装成一台从实例,所以看MySQL
主备复制原理:
Master
实例,将数据变更写入二进制日志binary log。(
其中记录叫做二进制日志事件binary log events
,可以通过show binlog events
进行查看)Slave
实例,将master
的binary log events
拷贝到它的中继日志relay log。
Slave
实例,重放relay log
中的事件,将数据变更反映它到自身的数据。
canal
的工作原理就是模拟slave,如下:
Canal
模拟MySQL Slave
的交互协议,伪装自己为MySQL Slave
,向MySQL Master
发送dump
协议MySQL Master
收到dump
请求,开始推送binary log
给Slave
(即Canal
)Canal
解析binary log
对象(原始为byte
流),并且可以通过连接器发送到对应的消息队列等中间件中