基于日志增量订阅&消费支持的业务:
- 数据库镜像
- 数据库实时备份
- 多级索引 (卖家和买家各自分库索引)
- search build
- 业务cache刷新
- 价格变化等重要业务消息
项目介绍
名称:canal [kə'næl]
译意: 水道/管道/沟渠
语言: 纯java开发
定位: 基于数据库增量日志解析,提供增量数据订阅&消费,目前主要支持了mysql
关键词: mysql binlog parser / real-time / queue&topic
工作原理
mysql主备复制实现
从上层来看,复制分成三步:- master将改变记录到二进制日志(binary log)中(这些记录叫做二进制日志事件,binary log events,可以通过show binlog events进行查看);
- slave将master的binary log events拷贝到它的中继日志(relay log);
- slave重做中继日志中的事件,将改变反映它自己的数据。
canal的工作原理:
原理相对比较简单:
- canal模拟mysql slave的交互协议,伪装自己为mysql slave,向mysql master发送dump协议
- mysql master收到dump请求,开始推送binary log给slave(也就是canal)
- canal解析binary log对象(原始为byte流)
相关文档
See the wiki page for :
wiki文档列表
QuickStart
See the page for quick start: .
ClientExample
See the page for quick start: .
AdminGuide
See the page for admin deploy guide :
时序表结构
New Feature:
重要版本更新说明
canal 1.1.x系列,参考release文档:
- 整体性能测试&优化,提升了150%. #726 参考: 【】
- 原生支持prometheus监控 #765 【】
- 原生支持kafka消息投递 #695 【】
- 原生支持aliyun rds的binlog订阅 (解决自动主备切换/oss binlog离线解析) 参考: 【】
- 原生支持docker镜像 #801 参考: 【】
多语言业务
- canal整体交互协议设计上使用了protobuf3.0,理论上可以支持绝大部分的多语言场景,欢迎大家提交多客户端的PR
- canal java客户端:
- canal c#客户端开源项目地址:
- canal go客户端开源项目地址:
- canal作为MySQL binlog的增量获取工具,可以将数据投递到MQ系统中,比如Kafka/RocketMQ,可以借助于MQ的多语言能力
- 参考文档:
版本相关
1. 建议版本:1.1.0
-
下载发布包:
-
maven依赖
com.alibaba.otter canal.client 1.1.0
- 详细的issues列表可查看:
相关资料
- ADC阿里技术嘉年华分享ppt (放在google docs上,可能需要FQ):
。。。