MySQL 的 Binlog 日志处理工具(Canal,Maxwell,Databus,DTS)对比
作者 | 小哈学Java
编辑 | 雷课小雷
MySQL是一种DBMS,而且是一种一个小型的开源的关系型数据库管理系统。2008年1月16日MySQL AB被Sun公司收购。而2009年,SUN又被Oracle收购。就这样如同一个轮回,MySQL成为了Oracle公司的另一个数据库项目。MySQL它在世界范围内得到了广泛的安装和使用,应该是使用人数最多的数据库软件了,本文将带大家了解MySQL的日志处理工具。
Canal
-
canal模拟mysql slave的交互协议,伪装自己为mysql slave,向mysql master发送dump协议 -
mysql master收到dump请求,开始推送binary log给slave(也就是canal) -
canal解析binary log对象(原始为byte流)
-
Connection获取上一次解析成功的位置(如果第一次启动,则获取初始制定的位置或者是当前数据库的binlog位点) -
Connection建立连接,发生BINLOG_DUMP命令 -
Mysql开始推送Binary Log -
接收到的Binary Log通过Binlog parser进行协议解析,补充一些特定信息 -
传递给EventSink模块进行数据存储,是一个阻塞操作,直到存储成功 -
存储成功后,定时记录Binary Log位置
-
数据过滤:支持通配符的过滤模式,表名,字段内容等 -
数据路由/分发:解决1:n (1个parser对应多个store的模式) -
数据归并:解决n:1 (多个parser对应1个store) -
数据加工:在进入store之前进行额外的处理,比如join
Maxwell
Databus
-
源与消费者之间的隔离 -
保证按顺序和至少一次交付具有高可用性 -
从更改流中的任意时间点开始消耗,包括整个数据的完全引导功能。 -
分区消费 -
源一致性保存
阿里云的数据传输服务DTS
END
往期精选
关注雷课
学习干货