天天看点

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      
Maxwell同步Mysql数据库写入Kafka

不要为了追逐,而忘记当初的样子。

继续阅读