1》docker中安装mysql容器
开启binlog模式
修改/etc/mysql/mysql.conf.d/mysqld.cnf
docker exec -it mysql /bin/bash cd /etc/mysql/mysql.conf.d vi mysqld.cnf
添加这两行
2》创建用于同步的账号并授权
采用root账号登录
mysql -uroot -p123456
create user canal@'%' IDENTIFIED by 'canal'; GRANT SELECT, REPLICATION SLAVE, REPLICATION CLIENT,SUPER ON *.* TO 'canal'@'%'; FLUSH PRIVILEGES;
3》重启mysql容器
docker restart mysql
4》docker中安装canal
docker pull docker.io/canal/canal-server
docker run -p 11111:11111 --name canal -d docker.io/canal/canal-server
docker exec -it canal /bin/bash cd canal-server/conf/ vi canal.properties cd example/ vi instance.properties
canal.properties的配置只要保证 canal.id 和master数据库中的serverid不重复
instance.properties
要配置master的地址 canal.instance.master.address
用于同步的账号 canal.instance.dbUsername
用于同步的密码 canal.instance.dbPassword
需要监听哪些表的正则过滤 canal.instance.filter.regex
canal的实例名称 canal.mq.topic
由于mysql主数据库是用docker安装的,这里master的地址要填写mysql容器的地址,先进入mysql容器,再查看ip就可以。
canal.instance.filter.regex = .*\..* 表示所有的表
canal.mq.topic 配置的实例表示微服务中要监听相同实例
docker update --restart=always canal
docker restart canal