安装
官网 https://maxwells-daemon.io/
下载地址,此版本有67M,如果发现启动不了,重新下载
https://github.com/zendesk/maxwell/releases/tag/v1.29.2
上传后解压
tar -zxvf maxwell-1.29.2.tar.gz -C /opt/module/
安装MySQL
https://blog.csdn.net/weixin_44371237/article/details/119966466
修改MySQL配置文件 vim /etc/my.cnf,在[mysqld]模块下添加一下内容
server_id=1
# 设置binlog 日志的前缀是 mysql-bin
log-bin=mysql-bin
# 行级, binlog 会记录每次操作后每行记录的变化。
binlog_format=row
# 指定test_maxwell数据库
#binlog-do-db=test_maxwell
启动MySQL
service mysqld start
登录 mysql
mysql -uroot -proot123456
查看是否修改完成
mysql> show variables like ‘%binlog%’;
进入
cd /var/lib/mysql
可以看到binlog文件(MySQL 生成的 binlog 文件初始大小一定是 154 字节)
初始化 Maxwell 元数据库
在 MySQL 中建立一个 maxwell 库用于存储 Maxwell 的元数据
CREATE DATABASE maxwell;
分配一个账号可以操作该数据库
GRANT ALL ON maxwell.* TO 'maxwell'@'%' IDENTIFIED BY '123456';
分配这个账号可以监控其他数据库的权限
GRANT SELECT ,REPLICATION SLAVE , REPLICATION CLIENT ON *.* TO maxwell@'%';
刷新 mysql 表权限
flush privileges;
用客户端打开,在mysql库的user表可以看到如下用户
输出到控制台
第一种启动方式:
–producer 生产者模式(stdout:控制台;kafka:kafka 集群)
bin/maxwell --user='maxwell' --password='123456' --host='hadoop100' --producer=stdout
第二种启动方式:
复制config.properties
cp config.properties.example config.properties
修改/opt/module/maxwell-1.29.2/config.properties
producer=stdout
host=hadoop100
password=123456
启动
bin/maxwell --config ./config.properties
如下启动成功
建表后插入数据
insert into test values(1,'aaa');
Maxwell监控到
{"database":"test_maxwell","table":"test","type":"insert","ts":1668590382,"xid":3907,"commit":true,"data":{"id":2,"name":"aaa"}}
输出到kafka
kafka安装
https://blog.csdn.net/weixin_44371237/article/details/126956860
windows 客户端工具
https://www.kafkatool.com/download.html
第一种启动方式:
启动 Maxwell 监控 binlog
bin/maxwell --user='maxwell' --password='123456' --host='hadoop100' --producer=kafka --kafka.bootstrap.servers=hadoop100:9092 --kafka_topic=maxwell
打开 kafka 的控制台的消费者消费 maxwell 主题
kafka-console-consumer.sh --bootstrap-server hadoop100:9092 --topic maxwell
第二种启动方式:
修改/opt/module/maxwell-1.29.2/config.properties
producer=kafka
kafka.bootstrap.servers=hadoop100:9092
host=hadoop100
启动
bin/maxwell --config ./config.properties
在数据库客户端创建test_maxwell和test_maxwell2库,然后插入数据
insert into test_maxwell.test values(3,'aaa');
insert into test_maxwell2.test values(3,'aaa');
打开kafka tool可以看到如下
设置数据显示为string,默认二进制
kafka 主题数据分区
maxwell 监控多个 mysql 库的数据,这些数据发往 kafka 的一个主题 Topic,并且这个主题也肯定是多分区的,为了提高并发度。
手动创建一个 3 个分区的 topic,名字就叫做 maxwell3
bin/kafka-topics.sh --zookeeper hadoop100:2181,hadoop101:2181,hadoop102:2181/kafka --create --replication-factor 2 --partitions 3 --topic maxwell3
bin/kafka-topics.sh --bootstrap-server hadoop100:9092 --create --partitions 3 --replication-factor 2 -topic maxwell3
修改/opt/module/maxwell-1.29.2/config.properties
producer=kafka
kafka.bootstrap.servers=hadoop100:9092
host=hadoop100
# *** kafka ***
kafka_topic=maxwell3
# *** partitioning ***
producer_partition_by=database
启动
bin/maxwell --config ./config.properties
数据初始化
先关闭maxwell,然后往元数据库添加数据
insert into maxwell.bootstrap(database_name,table_name) values(‘test_maxwell’,‘test’);