部分内容摘自【基于Canal和Kafka实现MySQL的Binlog近实时同步 - 掘金

大致流程

canal将binlog转到连接器kafka,接收方订阅topic消费后更新redis或es

canal工作原理

canal伪装成一台从实例,所以看MySQL主备复制原理:

  • Master实例,将数据变更写入二进制日志binary log。(其中记录叫做二进制日志事件binary log events,可以通过show binlog events进行查看)
  • Slave实例,将masterbinary log events拷贝到它的中继日志relay log
  • Slave实例,重放relay log中的事件,将数据变更反映它到自身的数据。

canal的工作原理就是模拟slave,如下:

  • Canal模拟MySQL Slave的交互协议,伪装自己为MySQL SlaveMySQL Master发送dump协议
  • MySQL Master收到dump请求,开始推送binary logSlave(即Canal
  • Canal解析binary log对象(原始为byte流),并且可以通过连接器发送到对应的消息队列等中间件中

GitHub 加速计划 / ca / canal
28.22 K
7.57 K
下载
alibaba/canal: Canal 是由阿里巴巴开源的分布式数据库同步系统,主要用于实现MySQL数据库的日志解析和实时增量数据订阅与消费,广泛应用于数据库变更消息的捕获、数据迁移、缓存更新等场景。
最近提交(Master分支:3 个月前 )
1e5b8a20 - 2 个月前
ff82fd65 2 个月前
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐