Maxwell监控MySQL的增量数据

Maxwell监控MySQL的增量数据

前置条件

1.Kafka能正常使用

2.Mysql能正常使用

开启Mysql的binlog

如何开启binlog:

https://blog.csdn.net/qq_41489540/article/details/112709210

怎么配置binlog看上面的帖子,my.cnf内容换成下面的内容

my.cnf内容

#设置binlog清理时间
expire_logs_days = 5
#binlog每个日志文件大小
max_binlog_size = 50m
server-id=1
log-bin=master
binlog_format=row
# 这个数据库发生数据改变就产生binlog日志
binlog-do-db=gmall202004

给maxwell分配用户和创建存储maxwell数据的数据

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

 $ mysql -uroot -proot

mysql> CREATE DATABASE maxwell ;

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

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

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

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

启动maxwell测试是否好用

启动命令:

bin/maxwell --user='maxwell' --password='123456' --host='zjj101' --producer=stdout
# --user:上述创建的用户
# --password:maxwell对应的密码
# --host:mysql的ip
# --producer:生产者,即将数据写入到哪里。stdout表示将数据输出到控制台,kafka表示写入到kafka.

在gmall202004 数据库里面随便创建一个表并且进行增删改查数据操作,然后能就能看到下面maxwell有输出json.

说明maxwell和之前binlog是好用的.

[root@zjj101 maxwell-1.25.0]# bin/maxwell --user='maxwell' --password='123456' --host='zjj101' --producer=stdout
Using kafka version: 1.0.0
16:11:12,343 WARN  MaxwellMetrics - Metrics will not be exposed: metricsReportingType not configured.
16:11:12,857 INFO  SchemaStoreSchema - Creating maxwell database
16:11:12,991 INFO  Maxwell - Maxwell v1.25.0 is booting (StdoutProducer), starting at Position[BinlogPosition[master.000001:120], lastHeartbeat=0]
16:11:13,144 INFO  AbstractSchemaStore - Maxwell is capturing initial schema
16:11:13,698 INFO  BinlogConnectorReplicator - Setting initial binlog pos to: master.000001:120
16:11:13,789 INFO  BinaryLogClient - Connected to zjj101:3306 at master.000001/120 (sid:6379, cid:38)
16:11:13,789 INFO  BinlogConnectorLifecycleListener - Binlog connected.
{
    
    "database":"gmall202004","table":"z_user_info","type":"delete","ts":1610784697,"xid":1540,"commit":true,"data":{
    
    "id":30,"user_name":"zhang3","tel":"13810001010"}}

maxwell整合kafka

拷贝maxwell根目录下的config.properties.example 改名字为config.properties

 cp config.properties.example  config.properties

修改    config.properties

producer=kafka
# 因为你要把读到的数据发送到Kafka,所以这里需要Kafka地址
kafka.bootstrap.servers=hadoop202:9092,hadoop203:9092,hadoop204:9092
#将数据放到哪个Kafka的topic里面.
kafka_topic=gmall2020_db_m
# mysql  登录账号密码啥的
host=zjj101
user=maxwell
password=123456
#需要添加 后续初始化会用
client_id=maxwell_1

注意:数据默认还是输出到指定 Kafka 主题的一个 kafka 分区,因为多个分区并行可能会打乱binlog 的顺序(就是业务数据插入的顺序)

如果要提高并行度并且不考虑binlog的顺序(就是业务数据插入的顺序),首先设置 kafka 的分区数>1,然后设置 producer_partition_by 属性

可选值 producer_partition_by=database|table|primary_key|random| column

启动maxwell

编写maxwell脚本

maxwell.sh

/root/soft/maxwell-1.25.0/bin/maxwell --config /root/soft/maxwell-1.25.0/config.properties >/dev/null 2>&1 &

运行启动脚本

sh maxwell.sh

查看是否启动

发现已经启动了maxwell

[root@zjj101 bin]# jps
123016 Maxwell

启动消费者

 kafka-console-consumer.sh --bootstrap-server zjj101:9092 --topic gmall2020_db_m

开始测试

在gmall202004 数据库里面随便创建一个表并且进行增删改查数据操作

此时发现kafka消费者已经数据json格式的数据

[root@zjj101 bin]# kafka-console-consumer.sh --bootstrap-server zjj101:9092 --topic gmall2020_db_m
{
    
    "database":"gmall202004","table":"z_user_info","type":"delete","ts":1610785227,"xid":2119,"commit":true,"data":{
    
    "id":31,"user_name":"li4","tel":"1389999999"}}
{
    
    "database":"gmall202004","table":"z_user_info","type":"insert","ts":1610785232,"xid":2141,"xoffset":0,"data":{
    
    "id":30,"user_name":"zhang3","tel":"13810001010"}}
{
    
    "database":"gmall202004","table":"z_user_info","type":"insert","ts":1610785232,"xid":2141,"commit":true,"data":{
    
    "id":31,"user_name":"li4","tel":"1389999999"}}

猜你喜欢

转载自blog.csdn.net/qq_41489540/article/details/113800578