简介
由来
Canal 是 阿里巴巴公司 Otter 中间件的一部分。
Otter存在意义:解决阿里巴巴异地机房的业务数据库实时同步问题。
实现原理:基于数据库增量日志解析,提供增量数据订阅&消费的中间件,使用Java开发。
Canal 实现了 MySQL的 binlog日志 解析,然后利用 canal client 获得的增量数据解析结果。
常见使用场景
1.更新缓存(监控MySQL,更新Redis)
2.抓取新增变化表,用于制作拉链表
3.业务数据库的实时项目
工作原理
MySQL自身拥有 主从复制机制(高可用),Canal 则是利用 Slave 从机身份来合法获取主数据库的全部更新数据(实质是主数据库执行过的SQL语句,从机再执行一遍,以来达到数据同步的效果)
具体步骤:
- Master 主库 将改变数据的SQL记录,写到二进制日志文件(binary log)
- Slave 从库 向 Master 主库 发送dump协议,将 Master 主库 的 binary log events 拷贝到从库自己的中继日志(relay log);
- Slave 从库 读取并重现中继日志中的事件,以达到数据同步的效果【莫名想起了历史重现(笑】