一:什么是canal
阿里巴巴B2B公司,因为业务的特性,卖家主要集中在国内,买家主要集中在国外,所以衍生出了杭州和美国异地机房的需求,从2010年开始,阿里系公司开始逐步的尝试基于数据库的日志解析,获取增量变更进行同步,由此衍生出了增量订阅&消费的业务。
canal是用java开发的基于数据库增量日志解析,提供增量数据订阅&消费的中间件。目前,canal主要支持了MySQL的binlog解析,解析完成后才利用canal client 用来处理获得的相关数据。(数据库同步需要阿里的otter中间件,基于canal)
二:canal的工作机制
1.mysql主从复制的工作机制:
复制过程分成三步:
(1) Master主库将改变记录,写到二进制日志(binary log)中(这些记录叫做二进制日志事件,binary log events,可以通过show binlog events进行查看);
(2) Slave从库向mysql master发送dump协议,将master主库的binary log events拷贝到它的中继日志(relay log);
(3) Slave从库读取并重做中继日志中的事件,将改变的数据同步到自己的数据库。
Binary Log:包含了一些数据库的事件,这些事件描述了数据库的改动,如建表、数据改动等。
2. canal的工作机制: