安装前置
安装并配置好MySQL和Kafka
安装Maxwell
-
解压Maxwell文件
-
tar -zxf /usr/local/install_pack/maxwell-1.29.0.tar.gz -C /opt/
-
修改配置文件
-
修改mysql配置文件,开启MySQL Binlog设置
-
vi /etc/my.cnf #在[mysqld]模块下添加一下内容 server_id=1 log-bin=mysql-bin binlog_format=row binlog-do-db=test_maxwell(不可以和MySQL用户名相同)
-
验证配置文件
-
重启MySQL服务
-
service mysql restart #如果报 ERROR! MySQL server PID file could not be found!错误,就先查找mysql进程:ps aux | grep mysql,然后kill掉,再运行重启命令
-
-
登录MySQL查看是否修改完成
-
mysql -uroot -p123456 mysql> show variables like '%binlog%'; #检查是否有以下属性 |binlog_format | ROW |
-
-
进入data目录,查看MySQL生成的binlog文件
-
cd /usr/local/mysql/data/ -rw-r-----. 1 mysql mysql 154 Oct 27 11:33 mysql-bin.000001 -rw-r-----. 1 mysql mysql 19 Oct 27 11:33 mysql-bin.index #注:MySQL 生成的 binlog 文件初始大小一定是 154 字节,然后前缀是 log-bin 参数配置的,后缀是默认从.000001,然后依次递增。除了 binlog 文件文件以外,MySQL 还会额外生产一个.index 索引文件用来记录当前使用的 binlog 文件。
-
初始化Maxwell源数据库
-
创建Maxwell元数据库,用于存储Maxwell元数据
-
mysql -uroot -p123456 create database test_maxwell
-
-
设置MySQL用户名密码安全级别
-
set global validate_password_length=4; set global validate_password_policy=0; #此步骤仅适用于rpm安装
-
-
分配一个账号来操作该数据库
-
GRANT ALL ON maxwell.* TO 'maxwell'@'%' IDENTIFIED BY '123456';
-
-
分配该账号可以监控其他数据库的权限
-
GRANT SELECT ,REPLICATION SLAVE , REPLICATION CLIENT ON *.* TO maxwell@'%';
-
-
刷新权限
-
flush privileges;
-
启动Maxwell进程,监听MySQL
-
使用命令行参数启动Maxwell进程
-
./maxwell --user='maxwell' --password='123456.' --host='master' --producer=stdout --user 连接mysql的用户 --password 连接MySQL的用户的密码 --host mysql安装的主机名 --producer 生产者模式(stdout:控制台 Kafka:Kafka集群)
-
-
修改配置文件,定制化启动Maxwell进程
-
cp config.properties.example config.properties vi config.properties #修改成一下内容 producer=stdout kafka.bootstrap.servers=localhost:9092 # mysql login info host=master user=maxwell password=123456
-
根据配置文件启动Maxwell
-
./bin/maxwell --config ./config.properties
-
-
-
重新打开一个界面,进入MySQL,操作设置好的数据库和表,在服务端就会监听到数据变化
监控MySQL数据日志传输到Kafka
-
首先保证zookeeper和Kafka启动成功
-
创建Kafka的topic
-
kafka-topics.sh --zookeeper master:2181 --create --topic maxwell --partitions 4 --replication-factor 1
-
-
Maxwell连接Kafka,数据传输到topic中
-
maxwell --user='maxwell' --password='123456' --host='master' --producer=kafka --kafka.bootstrap.servers=master:9092 --kafka_topic=maxwell
-
-
启动一个窗口,监听Kafka的topic
-
kafka-console-consumer.sh --bootstrap-server master:9092 --topic maxwell
-
-
在mysql中操作Maxwell绑定的数据库中的表
-
insert into test(id,name) values (5,'Make');
-
-
查看kafka的topic监听到的数据
-
{"database":"test_maxwell","table":"test","type":"insert","ts":1667742901,"xid":4542,"commit":true,"data":{"id":5,"name":"Make"}}
-