maxwell简介
maxwell是一个由Java编写的守护进程,可以实时读取mysql binlog并将行更新以JSON格式写入Kafka,Kinesis,RabbitMQ,Google Cloud Pub / Sub或Redis(Pub / Sub或LPUSH)。(以上内容摘自maxwell官网)。可以想象,有了mysql增量数据流,使用场景就很多了,比如:实时同步数据到缓存,同步数据到ElasticSearch,数据迁移等等。与canal(ali)相比,更加轻量
maxwell还提供以下功能:
- 使用
SELECT * FROM table
的方式做全量数据初始化 - 支持主库发生failover后,自动恢复binlog位置
- 对数据进行分区,解决数据倾斜的问题
- 伪装成mysql从库,接收binlog
maxwell官网:http://maxwells-daemon.io/
maxwell源码:https://github.com/zendesk/maxwell
maxwell使用
mysql配置
需要mysql开启binlog,而binlog默认是关闭的,需要开启,并且为了保证同步数据的一致性,使用的日志格式为row-based replication(RBR),新建或修改my.conf
开启binlog。
$ vim /etc/my.cnf
添加内容
[mysqld]
log-bin=mysql-bin #添加这一行就ok
binlog-format=ROW #选择row模式
server_id=1 #随机指定一个不能和其他集群中机器重名的字符串,如果只有一台机器,那就可以随便指定了
重启mysql, 查询是否已开启bin
show variables like '%log_bin%'