安装
https://github.com/alibaba/canal/wiki/QuickStart
Demo
Tips
- 目前(截止2019-7-26),canal只支持数据源为MySQL;
功能及使用场景
基于MySQL数据源的增量实时同步。canal常用于线上库(MySQL)到不同数据中间件(eg:HBase、elasticsearch等)的实时分发。
原理
- Step1. 将canal伪装为MySQL的从库,利用MySQL的主从同步机制,每当主库发生增删改时,将对应的binlog日志同步到canal(从库);
- Step2. canal解析binlog,还原DDL语句,并作用于canal,已形成一条条消息;
- Step3. 将消息分发到各个消费者。此过程一般会用到消息中间件,如Kafka;
Tips:一些概念
- MySQL主从: A/B两台MySQL实时同步,用于读写分离、临时灾备、备份;
- binlog:MySQL的增删改操作都会以二进制形式保存到本地log中;
- Docker:一种比虚拟机更优越的容器工具;
- canal-server:canal中与数据源MySQL连接的部分,用于获取binlog并解析;
- canal-client: