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
消费成功!
不要为了追逐,而忘记当初的样子。