一.数据源同步中间件:
Canal
https://github.com/alibaba/canal
https://github.com/Hackeruncle/syncClient
Maxwell
https://github.com/zendesk/maxwell
二.架构使用
MySQL —- 中间件 mcp —>KAFKA—>?—>存储HBASE/KUDU/Cassandra 增量的
a.全量 bootstrap
b.增量
1.对比
Canal(服务端) | Maxwell(服务端+客户端) | ||
---|---|---|---|
语言 | Java | Java | |
活跃度 | 活跃 | 活跃 | |
HA | 支持 | 定制 但是支持断点还原功能 | |
数据落地 | 定制 | 落地到kafka | |
分区 | 支持 | 支持 | |
bootstrap(引导) | 不支持 | 支持 | |
数据格式 | 格式自由 | json(格式固定) spark json–>DF | |
文档 | 较详细 | 较详细 | |
随机读 | 支持 | 支持 |
个人选择Maxwell
a.服务端+客户端一体,轻量级的
b.支持断点还原功能+bootstrap+json
Can do SELECT * from table (bootstrapping) initial loads of a table.
supports automatic position recover on master promotion
flexible partitioning schemes for Kakfa - by database, table, primary key, or column
Maxwell pulls all this off by acting as a full mysql replica, including a SQL parser for create/alter/drop statements (nope, there was no other way).
2.官网解读
3.部署
3.1 MySQL Install
https://github.com/Hackeruncle/MySQL/blob/master/MySQL%205.6.23%20Install.txt
https://ke.qq.com/course/262452?tuin=11cffd50
3.2 修改
1 | $ vi /etc/my.cnf |
3.4解压
1 | [root@hadoop000 software]# tar -xzvf maxwell-1.14.4.tar.gz |
3.5测试STDOUT:
1 | bin/maxwell --user='maxwell' \ |
测试1:insert sql:
1 | mysql> insert into ruozedata(id,name,age,address) values(999,'jepson',18,'www.ruozedata.com'); |
maxwell输出:
1 | { |
测试1:update sql:
1 | mysql> update ruozedata set age=29 where id=999; |
问题: ROW,你觉得binlog更新几个字段?
maxwell输出:
1 | { |
4.其他注意点和新特性
4.1 kafka_version 版本
Using kafka version: 0.11.0.1 0.10
jar:
1 | [root@hadoop000 kafka-clients]# ll |