采用Canal监听mysql数据库变化


 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

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM