不懂有些操作的可以看我的博客docker系列。废话就不多说了,比较简单。
按照我的步骤来,出了问题,喷我。
[root@localhost home] docker pull canal/canal-server:latest
说明1:不在做 映射,忽略
show variables like 'binlog_format%'
如果不是 ROW
,在 Mysql ,my.ini 文件 写入 以下配置
[mysqld]
#开启binlog
log-bin = mysql-bin
#选择 row 模式
binlog-format = ROW
#配置 mysql replaction 需要定义,不能和 canal 的 slaveId 重
server_id = 1
如果 是 Mysql 8 没有 my.ini 文件 ,自行创建文件 ,写入配置,重启Mysql
#创建用户
CREATE USER canal IDENTIFIED BY 'canal';
#赋权
GRANT SELECT, REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'canal'@'%';
#刷新
-- GRANT ALL PRIVILEGES ON *.* TO 'canal'@'%' ;
FLUSH PRIVILEGES;
这里的命令就不多做解释了,不懂的可以看看我前面的docker 系列博客,懒,不想多打字
[root@localhost home] docker run -d -p 11111:11111 --name canal canal/canal-server
[root@localhost home] docker exec -it canal /bin/bash
vi /home/admin/canal-server/conf/canal.properties
[root@b0454894a51e admin]# cd /canal-server/conf
[root@b0454894a51e admin]# vi canal.properties
添加 canal.id = 23
不能跟 数据库的 server_id
重复
修改 canal.destinations = example1
canal.auto.scan = false
如果 出现启动异常:example1 should start first
就是没有 更改 canal.destinations = example1
这是 canal 源码的一个问题,请自行看 https://github.com/alibaba/canal/issues/468
创建
example1
目录,然后将instance.properties
复制过去,再编辑文件
[root@b0454894a51e example]# cd example
[root@b0454894a51e example]# mkdir conf/example1
[root@b0454894a51e example]# cp conf/example/instance.properties conf/example1
[root@b0454894a51e example]# vim conf/example1/instance.properties
修改 address 为你自己的数据库地址
修改 过滤规则
canal.instance.filter.regex= [你要监控的数据库名称]\\..*
,默认是监控全库
修改完成 退出 容器 重启容器
[root@b0454894a51e example]# exit
[root@localhost home]# docker restart canal