maxwell/canal 对比

maxwell

maxwell实现原理其实就是会在数据源端的库默认maxwell生成对应的position信息,通过记录binlog的position位点来实现断点还原。当然我们也可以手动更新数据库position位置。maxwell库中还会有table,schema,bootstrap表,其中bootstrap可以进行表引导操作。

canal

而canal则是单纯的依靠binlog的position位点记录,解析binlog数据发送到kafka或其他组件。(1.1.*已经支持es,redis,kafka,web界面等多功能)

canal-admin  web模块

canal-server  采集数据,解析binlog   配置实例,mysql的信息

canal-adapter  (1.1.*已经可以同步kafka,es,hbase,logger,RDB,MongoDB,Redis)  

 

maxwell和canal的区别:

maxwell和canal都是基于mysql的binlog,

  1. canal1.1.*版本之前不支持数据到kafka.只能通过手动开发完成。
  2. maxwell只支持json格式,而canal的格式比较自由。
  3. maxwell部署非常方便,服务端客户端一体化。canal则有adapter,serer需要分开部署。canal相对更丰满一些
  4. canal支持HA,maxwell支持断点还原。
  5. maxwell支持bootstrap,对于数据初始化来说,canal还不支持。
  6. maxwell支持全量增量同步到kafka.canal全量暂时只能通过接口形式调用.
  7. canal依靠binlog的位点记录位置,maxwell自己记录了position。

 

问题

都会面临到kafka数据倾斜问题。都可以通过配置进行设置分区依据。

只能保证分区有序。maxwell分区级别有rowkey,table,database。需要保证表的顺序,只能通过table级别设置,也就是相同的表到一个分区中。

 

使用场景:

maxwell相对单一,定位就是mysql->kafka,部署很方便,适合短时间内项目快速迭代的场景。

你可能感兴趣的:(整理笔记,canal,maxwell,mysql,kafka)