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