这是 Maxwell 的守护进程,一个读取 MySQL binlogs 并将行更新作为 JSON 写入 Kafka、Kinesis 或其他流平台的应用程序。Maxwell 的操作开销很低,只需要 mysql 和一个可以写入的地方。它的常见用例包括 ETL、缓存构建/过期、指标收集、搜索索引和服务间通信。Maxwell 为您提供了事件溯源的一些好处,而无需重新构建整个平台。
github、v1.30.0 放弃对 JDK 8 的支持、v1.29.2 支持 JDK 8
# /etc/my.cnf
[mysqld]
# maxwell needs binlog_format=row
binlog_format=row
server_id=1
log-bin=master
授权
mysql> CREATE USER 'maxwell'@'%' IDENTIFIED BY 'XXXXXX';
mysql> CREATE USER 'maxwell'@'localhost' IDENTIFIED BY 'XXXXXX';
mysql> GRANT ALL ON maxwell.* TO 'maxwell'@'%';
mysql> GRANT ALL ON maxwell.* TO 'maxwell'@'localhost';
mysql> GRANT SELECT, REPLICATION CLIENT, REPLICATION SLAVE ON *.* TO 'maxwell'@'%';
mysql> GRANT SELECT, REPLICATION CLIENT, REPLICATION SLAVE ON *.* TO 'maxwell'@'localhost';
bin/maxwell --user='maxwell' --password='XXXXXX' --host='127.0.0.1' --producer=stdout
Docker
docker run -it --rm zendesk/maxwell bin/maxwell --user=$MYSQL_USERNAME \
--password=$MYSQL_PASSWORD --host=$MYSQL_HOST --producer=stdout
bin/maxwell --user='maxwell' --password='XXXXXX' --host='127.0.0.1' \
--producer=kafka --kafka.bootstrap.servers=localhost:9092 --kafka_topic=maxwell
Docker
docker run -it --rm zendesk/maxwell bin/maxwell --user=$MYSQL_USERNAME \
--password=$MYSQL_PASSWORD --host=$MYSQL_HOST --producer=kafka \
--kafka.bootstrap.servers=$KAFKA_HOST:$KAFKA_PORT --kafka_topic=maxwell
bin/maxwell --user='maxwell' --password='XXXXXX' --host='127.0.0.1' \
--producer=rabbitmq --rabbitmq_host='rabbitmq.hostname'
bin/maxwell --user='maxwell' --password='XXXXXX' --host='127.0.0.1' \
--producer=redis --redis_host=redis.hostname