maxwell mysql_mysql的maxwell的使用

只有mysql 可以使用此功能。

注意:此功能只有mysql可以使用。 阿里的canal也可以实现此功能,但是我用起来问题有点多。

postgresql也有类似的功能,但是不使用的此软件。可以自己查找pg_recvlogical test_decoding wal2json pgcat Logical Decoding 和最新的PgOutput。postgresql基本都是用插件实现。

sqlserver 的工具有debezium 但是没有测试。其实只要实现cdc功能就可以了。参考 https://www.cnblogs.com/wang2650/p/14367008.html

maxwell官方文档 地址http://maxwells-daemon.io/quickstart/

实现的功能

当你插入修改或删除记录的时候,maxwell会输出如下结果。这样你就会知道数据库每一条记录的增加 修改 和删除变化,并知道记录在修改前和修改后的值。

以前同样的功能,一般都是在执行sql的部分来实现。比如记录执行的sql语句,或者跟踪实体的值变化。但是是有问题,比如执行批量的修改 update tb set a=1 where id>3 你就无法知道修改了哪些记录。因为id大于3的记录是不固定的。除非你获取每一条的记录,然后逐行修改。

结果如下

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"}

}

eb9004ab5d9c58dacdffe587781469e8.png

一 mysql的部分

1开启逻辑复制功能

[mysqld]

server_id=1

log-bin=master

binlog_format=row

2设置用来复制的账号,用户名maxwell 密码xxxxxx

mysql> CREATE USER 'maxwell'@'%' IDENTIFIED BY 'XXXXXX';

mysql> GRANT ALL ON maxwell.* TO 'maxwell'@'%';

mysql> GRANT SELECT, REPLICATION CLIENT, REPLICATION SLAVE ON *.* TO 'maxwell'@'%';

需要注意的是,mysql的日志的部分,记得设置日志的大小和过期时间。防止生成太多的日志,占满磁盘。 日志大小默认好像是500m,日期和大小最好显式的设置一下。

maxwell的使用

1 命令行方式

输出到控制台

bin/maxwell --user='maxwell' --password='XXXXXX' --host='127.0.0.1' --producer=stdout

bin/maxwell --user='maxwell' --password='XXXXXX' --host='127.0.0.1' \

--producer=rabbitmq --rabbitmq_host='rabbitmq.hostname'

输出到redis

bin/maxwell --user='maxwell' --password='XXXXXX' --host='127.0.0.1' \

--producer=redis --redis_host=redis.hostname

2 docker

输出到控制台

docker run -it --rm zendesk/maxwell bin/maxwell --user=$MYSQL_USERNAME \

--password=$MYSQL_PASSWORD --host=$MYSQL_HOST --producer=stdout

输出到kafka

参考https://blog.csdn.net/qq_34285557/article/details/111995014

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值