注意:填写进 instance.properties 的master ip 是数据库的ip

select SUBSTRING_INDEX(host,':',1) as ip , count(*) from information_schema.processlist group by ip;

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

添加这两行

f9df3e5fe5a860ea3384987a9c980da9.png

2》创建用于同步的账号并授权

采用root账号登录

mysql -uroot -p123456

create user canal@'%' IDENTIFIED by 'canal';

GRANT SELECT, REPLICATION SLAVE, REPLICATION CLIENT,SUPER ON *.* TO 'canal'@'%';

FLUSH PRIVILEGES;

b75ce820502b917befc1e7175fa3724e.png

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不重复

7960c92cec40fb67f030e9b025bc6f2c.png

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就可以。

65ef8d471c195caee78446f4fdce5558.png

f0275e060a531bf9c93ce793066b4e62.png

canal.instance.filter.regex = .*\\..*    表示所有的表

canal.mq.topic 配置的实例表示微服务中要监听相同实例

docker update --restart=always canal

docker restart canal

GitHub 加速计划 / ca / canal
34
8
下载
alibaba/canal: Canal 是由阿里巴巴开源的分布式数据库同步系统,主要用于实现MySQL数据库的日志解析和实时增量数据订阅与消费,广泛应用于数据库变更消息的捕获、数据迁移、缓存更新等场景。
最近提交(Master分支:7 个月前 )
c15129b0 - 2 个月前
0741ccda - 2 个月前
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐