Maxwell同步Mysql数据库写入Kafka

前提环境:Zookeeper集群,Kafka集群,安装Mysql,配置Binlog。

 

一、Maxwell简介

Maxwell就是把自己伪装成slave假装从master复制数据。

Maxwell 是由美国Zendesk开源,用Java编写的MySQL实时抓取软件。 实时读取MySQL二进制日志Binlog,并生成 JSON 格式的消息,作为生产者发送给 Kafka,Kinesis、RabbitMQ、Redis、Google Cloud Pub/Sub、文件或其它平台的应用程序。

官网地址:http://maxwells-daemon.io/


二、开启Mysql的binlog服务

具体参考这里。

需要注意:配置my.cnf的binlog时候,注意监控同步的数据库是否是自己要Maxwell操作的库!

 

三、初始化Maxwell元数据库

1.在MySQL中建立一个maxwell库用于存储Maxwell的元数据

mysql -uroot -p000000
mysql> CREATE DATABASE maxwell;

2.设置安全级别

mysql> set global validate_password_length=4;
mysql> set global validate_password_policy=0;

3.分配一个账号可以操作该数据库

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

4.分配这个账号可以监控其他数据库的权限

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

 

 

四、使用Maxwell监控抓取MySQL数据

1.拷贝配置文件

[maxwell-1.25.0]$ cp config.properties.example config.properties

2.修改配置文件

producer=kafka
kafka.bootstrap.servers=hadoop102:9092,hadoop103:9092,hadoop104:9092

#需要添加
kafka_topic=ods_base_db_m

# mysql login info
host=hadoop102
user=maxwell
password=000000

#需要添加 初始化会用
client_id=maxwell_1

3.在/bin下编写maxwell.sh启动脚本

[maxwell-1.25.0]$ vim /home/bin/maxwell.sh
/opt/module/maxwell-1.25.0/bin/maxwell --config  /opt/module/maxwell-1.25.0/config.properties >/dev/null 2>&1 &

4.授予执行权限

sudo chmod +x /home/bin/maxwell.sh

5.运行启动程序

[maxwell-1.25.0]$ maxwell.sh

6.启动Kafka消费者客户端,观察结果

[kafka]$ bin/kafka-console-consumer.sh --bootstrap-server hadoop102:9092 --topic ods_base_db_m

7.执行/opt/module/rt_dblog下的jar生成模拟数据

 

java -jar gmall2020-mock-db-2020-11-27.jar

 

 

 消费成功!

 

posted @ 2021-08-06 18:36  明明就-  阅读(518)  评论(0编辑  收藏  举报