maxwell学习笔记

maxwell学习笔记

Maxwell定义

Maxwell是由美国Zendesk开源,用Java编写的MySql实时抓取软件。实时抓取MySQL二进制日志Binlog,并生成JSON格式的消息,作为生产者发送给KKafka,Kinesis,RabbitMQ,Redis,Google Cloud Pub/Sub,文件或其他平台的应用程序。
官网地址:http://maxwells-daemon.io/
目前最新的是1.38.0版本(2022年10月6日)
但是1.29.2 是最后一个支持JDK8的版本,使用JDK8的小伙伴请加下这个版本。

Maxwell工作原理

MySQL主从复制

Master主库,发生改变时,写进二进制日志Binlog(binary log)
Slave从库,通过IO线程,将Binlog读取保存到Relaylog,然后在自己的仓库中执行Relaylog,实现数据同步。

Maxwell工作原理

Maxwell伪装成Slave从库,从Master主库中获取binlog,

MySQL的Binlog

Binlog记录所有的DDL和DML语句,不记录数据查询语句。
以事件形式记录,以及执行消耗事件,事务安全的。

1. DDL(data defination language)数据库定义语言
2. DML(data manipulation language)数据操作语言
3. DCL(data control language)数据库控制语言
4. DQL(data query language)数据查询语言

作用:

  • master-slave数据同步
  • 数据恢复

相关链接:
https://dev.mysql.com/doc/refman/5.7/en/binary-log.html
https://dev.mysql.com/doc/refman/5.7/en/replication-options-binary-log.html

MySQL开启Binlog

linux系统配置文件默认位置:/etc/my.cnf

快速定位配置文件
# locate my.cnf 

在[mysqld]区块中配置binlog配置

快速定位[mysqld]区块
root@/etc/mysql# grep -rn -F "[mysqld]"
mysql.conf.d/mysqld.cnf:27:[mysqld]

相关配置:

# binlog位置和名称
log_bin                        = /var/log/mysql/mysql-bin.log
# binlog日志文件大小
max_binlog_size   = 100M
# binlog格式
# binlog_format = statement # 记录SQL语句(有可能数据不一致,比如语句中有当前时间) 数据量小,节省空间
binlog_format = row # 记录行级别的数据改变,数据量大,占用空间,能保证一致性。
binlog_format = mixed # 混合格式,不会导致不一致问题的,保存为SQL语句,会导致不一致性的,保存行数据,但是还有可能导致不一致性的可能。

Maxwell需要binlog_format配置成row格式

Maxwell使用

安装MySQL

sudo apt-get install mysql-server mysql-client

解注

server-id               = 1
log_bin                 = /var/log/mysql/mysql-bin.log

加一行配置:

binlog_format           = row

默认对所有数据库进行binlog日志
可以指定对特定数据库进行binlog

binlog-do-db            = <数据库名称1>
binlog-do-db            = <数据库名称2>
binlog-do-db            = <数据库名称3>

systemctl restart mysql.service

安装JDK

# sudo apt-get install -y openjdk-8-jdk
...
# java -version
openjdk version "1.8.0_342"
OpenJDK Runtime Environment (build 1.8.0_342-8u342-b07-0ubuntu1~18.04-b07)
OpenJDK 64-Bit Server VM (build 25.342-b07, mixed mode)

安装Kafka

安装Maxwell

https://maxwells-daemon.io/changelog/
下载需要的版本

解压
root@/opt# tar -zxvf maxwell-1.29.2.tar.gz

初始化Maxwell

创建mysql账户与配置账户权限
# mysql -uroot -p
##### 创建数据库
mysql> CREATE DATABASE maxwell;
##### 密码强度修改可选
mysql> set global validata_password_length=4;
mysql> set global validata_password_policy=0;
##### 创建数据库账户
mysql> GRANT ALL on maxwell.* TO 'maxwell'@'%'  IDENTIFIED BY 'maxwell';
##### 分配数据库权限
mysql> GRANT SELECT , REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO maxwell@'%' ;
##### 刷新权限
mysql> FLUSH PRIVILEGES;
##### 查看账户和权限配置
mysql> use mysql;
Database changed
mysql> select Host,User,Select_priv,Repl_slave_priv,Repl_client_priv from user where User like "maxwell";
+------+---------+-------------+-----------------+------------------+
| Host | User    | Select_priv | Repl_slave_priv | Repl_client_priv |
+------+---------+-------------+-----------------+------------------+
| %    | maxwell | Y           | Y               | Y                |
+------+---------+-------------+-----------------+------------------+
1 row in set (0.00 sec
修改maxwell配置文件

安装目录中,拷贝配置文件config.properties.example,命名为config.properties
修改config.properties
用于测试,临时将,kafka修改为stdout
数据库用户配置为创建的用户

log_level=info

#producer=kafka
producer=stdout
kafka.bootstrap.servers=localhost:9092

# mysql login info
host=localhost
user=maxwell
password=maxwell

启动

./bin/maxwell --config ./config.properties

第一次启动会初始化数据

07:41:09,950 INFO  SchemaStoreSchema - Creating maxwell database
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值