canal
https://github.com/alibaba/canal
又一个阿里巴巴开源的数据同步工具
定位: 基于数据库增量日志解析,提供增量数据订阅&消费,目前主要支持了mysql
基于日志增量订阅&消费支持的业务:
数据库镜像
数据库实时备份
多级索引 (卖家和买家各自分库索引)
search build
业务cache刷新
价格变化等重要业务消息
原理
- canal模拟mysql slave的交互协议,伪装自己为mysql slave,向mysql master发送dump协议
- mysql master收到dump请求,开始推送binary log给slave(也就是canal)
- canal解析binary log对象(原始为byte流)
说白了就是利用mysql的主从同步机制。这货伪装成一个slave节点,去读取binlog日志分析数据变更,进行同步操作。
基于生产者和消费者模型
如何使用
官方教程 https://github.com/alibaba/canal/wiki/Docker-QuickStart
老规矩用docker安装
docker pull canal/canal-server
运行镜像:
下载脚本
wget https: