网上大多数示例没有过于繁琐或者复制粘贴,不能成功。现记录下自己的过程。maxwell会使用MySQL的maxwell数据库,不会监听该数据库的数据。
分为5步:安装MySQL,配置binlog,创建maxwell用户,安装运行maxwell,测试maxwell工作是否正常。
- 安装MySQL
使用如下命令,即可拉取MySQL 5.7的镜像,并指定密码123456
,且运行:
docker run --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7
- 配置binlog
编辑一个my.cnf
文件,开启binlog,指定的server-id不能为0,必须是唯一的
[mysqld]
server-id=1
log-bin=master
binlog_format=row
使用docker cp my.cnf mysql:/etc/
复制到容器内,然后运行docker restart mysql
, 进入mysql容器docker exec -it mysql bash
,登录mysql。
使用如下命令检查binlog配置:
show variables like 'log_bin';
show variables like 'binlog_format';
- 创建maxwell角色
执行如下命令,不能省掉任何一步。
CREATE USER 'maxwell'@'%' IDENTIFIED BY '123456';
GRANT ALL ON maxwell.* TO 'maxwell'@'%';
GRANT SELECT, REPLICATION CLIENT, REPLICATION SLAVE on *.* to 'maxwell'@'%';
flush privileges;
- 安装运行maxwell
使用如下命令拉取maxwell镜像并且安装(ip地址替换成自己MySQL的地址):
docker run -ti --rm zendesk/maxwell bin/maxwell --user='maxwell' --password='123456' --host='10.250.115.210' --producer=stdout
- 测试maxwell
选择一个非maxwell的数据库,比如test。创建如下表:
create table `user`(
id int(11) not null auto_increment primary key,
age int(11)
);
执行如下sql,并且观察maxwell在控制台是否有输出:
insert into user values (null, 11);
update user set age = 12 where id=1;
delete from user where id = 1;
控制台能观察到3行json,分别对应增、改、删。