输出到 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,存起来。