目的:maxwell可以监控mysql数据变化,并同步到kafka、mq或tcp等。
maxwell和canal区别:
环境 :win10,mysql5.7,maxwell最新
maxwell官网地址: Maxwell's Daemon
win10 不支持MAXWELL,只能用docker安装。
Docker for Windows安装参见Docker的安装与使用(Windows10版) - 知乎
Docker for Windows的当前版本运行在64位Windows 10 Pro,专业版、企业版和教育版。(不支持家庭版)
装好docker后启动。
或者 Docker 下Docker的方式进行安装
[mysqld] 服务端配置下面添加三行(其他配置勿动):
server_id=1
log-bin=master
binlog_format=row
或者直接运行如下指令:
mysql> set global binlog_format=ROW;
mysql> set global binlog_row_image=FULL;
配置完后重启mysql 服务:net stop mysql net start mysql
maxwell需要建库、建用户和赋权:
CREATE DATABASE `maxwell`;
GRANT ALL ON maxwell.* TO 'maxwell'@'%' IDENTIFIED BY 'maxwell';
grant select ,replication slave,replication client on *.* to maxwell@'%';
flush privileges;
注:也可以命令下载运行
docker run -it --rm zendesk/maxwell bin/maxwell --user=maxwell --password=maxwell --host=192.168.25.5 --producer=stdout
version: '3.5'
services:
maxwell:
image: zendesk/maxwell
network_mode: "host"
command: bin/maxwell --config /etc/maxwell/config.properties
volumes:
- ./conf:/etc/maxwell/
注意ip要改成自己的。
daemon=true
# 第一次启动时建议改为debug,可以开到mysql数据与kafka请求,稳定后再改为info
log_level=info
#producer=kafka
producer=stdout
kafka.bootstrap.servers=10.0.233.191:9092
# 会往 kafka下主题为'test'的分区下推送数据
kafka_topic=test
#当producer_partition_by设置为table时,Maxwell会将生成的消息根据表名称进行分区,不同的表将会被分配到不同的分区中,默认为database
producer_partition_by=table
client_id=maxwell_1
# mysql login info 需要先在mysql创建maxwell用户
host=192.168.1.101
port=3306
user=maxwell
password=maxwell
schema_database=maxwell
#include_dbs= maxwell
#include_tables= user
# 进入docker_maxwell目录下
cd /.../docker_maxwell
# 启动服务
docker compose up -d
INSERT INTO example.sys_user
( username, password, nickname, role_id, create_time, update_time, delete_status)
VALUES( 'test1', '123456', '就看看列表', 3, '2017-11-22 16:29:41.0', '2017-11-22 16:29:41.0', '1');
创建conf文件夹,在conf文件夹下添加 config.properties文件
注意: 文件内IP替换成自己本机IP
daemon=true
# 第一次启动时建议改为debug,可以开到mysql数据与kafka请求,稳定后再改为info
log_level=info
producer=kafka
kafka.bootstrap.servers=IP:9092
# 会往 kafka下主题为'test'的分区下推送数据
kafka_topic=test
#当producer_partition_by设置为table时,Maxwell会将生成的消息根据表名称进行分区,不同的表将会被分配到不同的分区中,默认为database
producer_partition_by=table
client_id=maxwell_1
# mysql login info 需要先在mysql创建maxwell用户
host=IP
port=33106
user=maxwell
password=maxwell
schema_database=maxwell