MySQL Binlog 解析工具 Maxwell 详解 (2)

输出到 Kafka,关闭 docker,重新设置启动参数

docker run -it --rm zendesk/maxwell bin/maxwell --user='maxwell' \ --password='123456' --host='10.100.97.246' --producer=kafka \ --kafka.bootstrap.servers='10.100.97.246:9092' --kafka_topic=maxwell --log_level=debug

然后启动一个消费者来消费 maxwell topic的消息,观察其输出;再一次执行增改删数据的SQL,仍然可以得到相同的输出

bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic maxwell 输出JSON字符串的格式

data 最新的数据,修改后的数据

old 旧数据,修改前的数据

type 操作类型,有insert, update, delete, database-create, database-alter, database-drop, table-create, table-alter, table-drop,bootstrap-insert,int(未知类型)

xid 事务id

commit 同一个xid代表同一个事务,事务的最后一条语句会有commit,可以利用这个重现事务

server_id

thread_id

运行程序时添加参数--output_ddl,可以捕捉到ddl语句

datetime列会输出为"YYYY-MM-DD hh:mm:ss",如果遇到"0000-00-00 00:00:00"会原样输出

maxwell支持多种编码,但仅输出utf8编码

maxwell的TIMESTAMP总是作为UTC处理,如果要调整为自己的时区,需要在后端逻辑上进行处理

与输出格式相关的配置如下

选项 参数值 描述 默认值
output_binlog_position   BOOLEAN   是否包含 binlog position   false  
output_gtid_position   BOOLEAN   是否包含 gtid position   false  
output_commit_info   BOOLEAN   是否包含 commit and xid   true  
output_xoffset   BOOLEAN   是否包含 virtual tx-row offset   false  
output_nulls   BOOLEAN   是否包含值为NULL的字段   true  
output_server_id   BOOLEAN   是否包含 server_id   false  
output_thread_id   BOOLEAN   是否包含 thread_id   false  
output_schema_id   BOOLEAN   是否包含 schema_id   false  
output_row_query   BOOLEAN   是否包含 INSERT/UPDATE/DELETE 语句. Mysql需要开启 binlog_rows_query_log_events   false  
output_ddl   BOOLEAN   是否包含 DDL (table-alter, table-create, etc) events   false  
output_null_zerodates   BOOLEAN   是否将 '0000-00-00' 转换为 null?   false  
进阶使用 基本的配置 选项 参数值 描述 默认值
config     配置文件 config.properties 的路径    
log_level   [debug | info | warn | error]   日志级别   info  
daemon     指定Maxwell实例作为守护进程到后台运行    
env_config_prefix   STRING   匹配该前缀的环境变量将被视为配置值    

可以把Maxwell的启动参数写到一个配置文件 config.properties 中,然后通过 config 选项指定,bin/maxwell --config config.properties

user=maxwell password=123456 host=10.100.97.246 producer=kafka kafka.bootstrap.servers=10.100.97.246:9092 kafka_topic=maxwell mysql 配置选项

Maxwell 根据用途将 MySQL 划分为3种角色:

host:主机,建maxwell库表,存储捕获到的schema等信息

主要有六张表,bootstrap用于数据初始化,schemas记录所有的binlog文件信息,databases记录了所有的数据库信息,tables记录了所有的表信息,columns记录了所有的字段信息,positions记录了读取binlog的位移信息,heartbeats记录了心跳信息

replication_host:复制主机,Event监听,读取该主机binlog

将host和replication_host分开,可以避免 replication_user 往生产库里写数据

schema_host:schema主机,捕获表结构schema的主机

binlog里面没有字段信息,所以maxwell需要从数据库查出schema,存起来。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wpjggp.html