docker 搭建canal

准备

对于自建 MySQL , 需要先开启 Binlog 写入功能,配置 binlog-format 为 ROW 模式,my.cnf 中配置如下

[mysqld]
log-bin=mysql-bin # 开启 binlog
binlog-format=ROW # 选择 ROW 模式
server_id=1 # 配置 MySQL replaction 需要定义,不要和 canal 的 slaveId 重复

注意:针对阿里云 RDS for MySQL , 默认打开了 binlog , 并且账号默认具有 binlog dump 权限 , 不需要任何权限或者 binlog 设置,可以直接跳过这一步

授权 canal 链接 MySQL 账号具有作为 MySQL slave 的权限, 如果已有账户可直接 grant

CREATE USER canal IDENTIFIED BY 'canal';  
GRANT SELECT, REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'canal'@'%';
-- GRANT ALL PRIVILEGES ON *.* TO 'canal'@'%' ;
FLUSH PRIVILEGES;

拉取镜像

docker pull canal/canal-server:v1.1.6

第一次运行镜像

docker run -itd -h 0 --name=cs --net=host  -m 4096m canal/canal-server:v1.1.6;

复制配置到宿主机,并修改配置文件

docker cp cs:/home/admin/canal-server ~/data/canal-server;

# 配置配置文件,以rabbitmq为例
# 1.首先要修改canal.properties文件
# tcp, kafka, rocketMQ, rabbitMQ, pulsarMQ 修改为rabbitmq 
canal.serverMode = rabbitMQ
# 配置上我们的rabbitmq信息
rabbitmq.host = 127.0.0.1
rabbitmq.virtual.host = /
rabbitmq.exchange = canal_exchange
rabbitmq.username = admin
rabbitmq.password = admin
rabbitmq.deliveryMode =
#2.再修改instance.properties文件
# 链接数据库的信息
canal.instance.master.address=127.0.0.1:3306
# username/password 链接数据库的账号密码
canal.instance.dbUsername=root
canal.instance.dbPassword=root
#mq config  这里是rabbitmq的routerkey
canal.mq.topic=canal_key

删除原有的镜像,重新跑带映射配置的镜像

docker rm -f cs; # 省事玩法
docker stop cs; docker rm cs;
#运行宿主机的配置
docker run -itd -h 0 --name=cs --net=host -v ~/data/canal-server:/home/admin/canal-server  -m 4096m canal/canal-server:v1.1.6;
上次更新:
贡献者: liutian