Maxwell
Damoncai 3/4/2022 Maxwell
# Maxwell 介绍
Maxwell 是由美国 zendesk 开源,用 java 编写的 Mysql 实时抓取软件,其抓取的原理也是基于 binlog。
# Maxwell 和 canal 工具对比
Maxwell 没有 canal 那种 server+client 模式,只有一个 server 把数据发送到消息队列或 redis。如果需要多个实例,通过指定不同配置文件启动多个进程。
Maxwell 有一个亮点功能,就是 canal 只能抓取最新数据,对已存在的历史数据没有办法处理。而 Maxwell 有一个 bootstrap 功能,可以直接引导出完整的历史数据用于初始化,非常好用。
Maxwell 不能直接支持 HA,但是它支持断点还原,即错误解决后重启继续上次点儿读取数据。
Maxwell 比 Canal 更加轻量级
# 安装 Maxwell
上传解压文件
在数据库(ha01)中建立一个 maxwell 库用于存储 Maxwell 的元数据
CREATE DATABASE maxwell
1分配一个账号可以操作该数据库
set global validate_password_length=4; set global validate_password_policy=0; GRANT SELECT, REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO'maxwell'@'%' IDENTIFIED BY 'maxwell' ;
1
2
3
4
5分配这个账号可以监控其他数据库的权限
GRANT SELECT ,REPLICATION SLAVE , REPLICATION CLIENT ON *.* TO maxwell@'%';
1使用 Maxwell 监控抓取 MySQL 数据
cp config.properties.example config.properties
1修改配置文件
producer=kafka kafka.bootstrap.servers=ha01:9092,ha02:9092,ha03:9092 #需要添加 kafka_topic=gmall2020_db_m # mysql login info host=ha01 user=maxwell password=123456 #需要添加 后续初始化会用 client_id=maxwell_1
1
2
3
4
5
6
7
8
9
10注意:默认还是输出到指定 Kafka 主题的一个 kafka 分区,因为多个分区并行可能会打乱binlog 的顺序
如果要提高并行度,首先设置 kafka 的分区数>1,然后设置 producer_partition_by 属性可选值 producer_partition_by=database|table|primary_key|random| column
在/home/damoncai/bin 目录下编写 maxwell.sh 启动脚本
vim /home/damoncai/bin/maxwell.sh /opt/module/maxwell-1.25.0/bin/maxwell --config /opt/module/maxwell-1.25.0/config.properties >/opt/module/maxwell-1.25.0/maxwell.log 2>&1 &
1
2
3授予执行权限
执行脚本
启动 Kafka 消费客户端,观察结果
bin/kafka-console-consumer.sh --bootstrap-server ha01:9092 --topic gmall2020_db_m
1向bin-log中配置的数据库添加数据