1、Maxwell介绍
maxwell读取MySQL二进制日志并以JSON格式将行更新写入到Kafka,Kinesis或其他流媒体平台。Maxwell的操作开销很低,只需要mysql和一个可写的地方即可。它的常见用例包括ETL,缓存建立/过期,指标收集,搜索索引和服务间通信,Maxwell为您提供了时间来源的一些优势,而无需重新架构整个平台。
2、数据示例
增加数据
mysql> insert into `test`.`maxwell` set id = 1, daemon = 'Stanislaw Lem';
maxwell: {
"database": "test",
"table": "maxwell",
"type": "insert",
"ts": 1449786310,
"xid": 940752,
"commit": true,
"data": { "id":1, "daemon": "Stanislaw Lem" }
}
修改数据
mysql> update test.maxwell set daemon = 'firebus! firebus!' where id = 1;
maxwell: {
"database": "test",
"table": "maxwell",
"type": "update",
"ts": 1449786341,
"xid": 940786,
"commit": true,
"data": {"id":1, "daemon": "Firebus! Firebus!"},
"old": {"daemon": "Stanislaw Lem"}
}
3、Maxwell主要功能
4、同类工具对比
除了Maxwell外,目前常用的MySQL Binlog解析工具主要有阿里的canal、mysql_streamer,三个工具对比如下:
bootstrap 引导程序
增量同步:MySQL ---> 中间件(canal\maxwell) --->Kafka---->?--->存储 Hbase/kudu/cassandra
全量: 使用bootstrap进行引导,作用是全量抽取mysql数据
Maxwell允许您将数据“引导”到流中。这将执行select * from table和将结果
输出到您的流中,从而允许您从头开始播放流来重新创建整个数据集
canal由Java开发,分为服务端和客户端,拥有众多的衍生应用,性能稳定,功能强大。
canal需要自己编写客户端来消费canal解析到的数据。
maxwell相对canal的优势是使用简单,它直接将数据变更输出为json字符串,不需要再编写客户端。