Maxwell简介
Maxwell是一个能实时读取MySQL二进制日志binlog,并生成 JSON 格式的消息,作为生产者发送给 Kafka,Kinesis、RabbitMQ、Redis、Google Cloud Pub/Sub、文件或其它平台的应用程序。它的常见应用场景有ETL、维护缓存、收集表级别的dml指标、增量到搜索引擎、数据分区迁移、切库binlog回滚方案等。Maxwell给出了一些无需重新构建整个平台的事件来源的好处。大家可以通过官网下载合适的版本进行使用。
Maxwell主要提供了下列功能:
- 支持 SELECT * FROM table 的方式进行全量数据初始化
- 支持在主库发生failover后,自动恢复binlog位置(GTID)。
- 可以对数据进行分区,解决数据倾斜问题,发送到kafka的数据支持database、table、column等级别的数据分区。
- 工作方式是伪装为Slave,接收binlog events,然后根据schemas信息拼装,可以接受ddl、xid、row等各种event。
MaxWell安装
Maxwell安装相对比较简单,本次主要是修改maxwell的配置文件。
1.上传maxwell并解压到指定目录
使用linux连接服务器工具,把maxwell.1.24.1.tar.gz上传到/soft目录下。
[root@localhost bin]# tar -xvf maxwell.1.24.1.tar.gz -C /opt/maxwell
在把maxwell安装完成后,再在mysql数据库中配置maxwell用户和库。
Mysql服务配置(my.conf)
在/etc/my.conf添加以下内容,在安装mysql时,已在my.cnf文件中添加了相应内容。
[mysqld]
server_id=23
log-bin=bin-log
binlog_format=row
解释:
MySQL必须开启了binlogs,即log-bin指定了目录
binlog_format必须是row
server_id指定mysql的全局唯一id
在修改mysql conf后,需要重启mysql服务
[root@localhost ~]#systemctl stop mysql
[root@localhost ~]#systemctl start mysql
或者[root@localhost ~]#service mysqld restart
Maxwell用户权限配置
Maxwell需要储存它自己的一些状态数据,启动参数schema_database选型来指定,默认是maxwell。
MySQL 用户及权限配置(SQL)
创建maxwell用户,并设置密码为’123456’。mysql> CREATE USER 'maxwell'@'%' IDENTIFIED BY '123456';
创建maxwell数据库,存储maxwell工具的一些状态数据。mysql> CREATE DATABASE IF NOT EXISTS maxwell default charset utf8 COLLATE utf8_general_ci;
对maxwell用户进行授权。
mysql> GRANT ALL on *.* to 'maxwell'@'%' identified by 'XXXXXX';
mysql> GRANT SELECT, REPLICATION CLIENT, REPLICATION SLAVE on *.* to 'maxwell'@'%';
Maxwell的配置文件
- 在/opt/maxwell目录下创建一个config.properties文件,写入指定配置:
[root@localhost maxwell]#vim config.properties
#[mysql]
user=maxwell #连接mysql用户名
password=123456 #连接mysql的密码
host=192.168.1.22 # mysql的主机名(IP地址)
port=3306 #mysql端口
#[producer]
producer=redis
redis_host=127.0.0.1
#redis服务器ip地址
redis_port=6379
#redis的端口,默认是6379
redis_database =0
#redis中数据库,默认为0
rredis_key=maxwell
redis_stream_json_key=m