Maxwell和Canal对比
Maxwell 没有 Canal那种server+client模式,只有一个server把数据发送到消息队列或redis。
➢ Maxwell 有一个亮点功能,就是Canal只能抓取最新数据,对已存在的历史数据没有办法处理。
而Maxwell有一个bootstrap功能,可以直接引导出完整的历史数据用于初始化,非常好用。
➢ Maxwell不能直接支持HA,但是它支持断点还原,即错误解决后重启继续上次点儿读取数据。
➢ Maxwell只支持json格式,而Canal如果用Server+client模式的话,可以自定义格式。
➢ Maxwell比Canal更加轻量级。
执行不同操作,Maxwell和canal数据格式对比
执行insert测试语句
INSERT INTO z_user_info VALUES(30,'zhang3','13810001010'),(31,'li4','1389999999');
执行update操作
UPDATE z_user_info SET user_name='wang55' WHERE id IN(30,31)
delete操作
DELETE FROM z_user_info WHERE id IN(30,31)
总结数据特点
日志结构
canal 每一条SQL会产生一条日志,如果该条Sql影响了多行数据,则已经会通过集合的方式归集在这条日志中。(即使是一条数据也会是数组结构)
maxwell 以影响的数据为单位产生日志,即每影响一条数据就会产生一条日志。如果想知道这些日志是否是通过某一条sql产生的可以通过xid进行判断,相同的xid的日志来自同一sql。
数字类型
当原始数据是数字类型时,maxwell会尊重原始数据的类型不增加双引,变为字符串。canal一律转换为字符串。
带原始数据字段定义
canal数据中会带入表结构。maxwell更简洁。