docker部署canal-server
以下是使用 Docker 安装 Canal-Server 的详细步骤,结合了多个实际部署案例的最佳实践:
一、安装前准备
- 配置 MySQL
-
开启 binlog 日志并设置为 ROW 模式,在 MySQL 配置文件(如
/etc/my.cnf
)中添加:[mysqld] log-bin=mysql-bin binlog-format=ROW server_id=1
配置后需重启 MySQL
-
创建 Canal 专用账户并授权:
sql
CREATE USER 'canal'@'%' IDENTIFIED BY 'canal'; GRANT SELECT, REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'canal'@'%'; FLUSH PRIVILEGES;
-
二、Docker 部署 Canal-Server
-
拉取镜像
docker pull canal/canal-server:v1.1.5 # 推荐稳定版本,避免最新版潜在问题(网页4][7](@ref)
-
初始化配置文件
- 创建挂载目录:
mkdir -p /opt/docker/canal/{conf,logs}
- 通过临时容器提取默认配置:
docker run --name canal_temp -d canal/canal-server:v1.1.5 docker cp canal_temp:/home/admin/canal-server/conf/canal.properties /opt/docker/canal/conf/ docker cp canal_temp:/home/admin/canal-server/conf/example/instance.properties /opt/docker/canal/conf/ docker rm -f canal_temp
- 创建挂载目录:
-
修改关键配置
- **
instance.properties
**:properties
# 不要监听元数据的变化,如建表语句等 canal.instance.tsdb.enable=false canal.instance.master.address=mysql_host:3306 # MySQL地址 canal.instance.dbUsername=canal canal.instance.dbPassword=canal canal.instance.filter.regex=.*\\..* # 监控所有库表(网页3][4](@ref)
- **
三、启动容器
- 运行命令
docker run -d \ --name canal-server \ -p 11111:11111 \ -v /opt/docker/canal/conf/canal.properties:/home/admin/canal-server/conf/canal.properties \ -v /opt/docker/canal/conf/instance.properties:/home/admin/canal-server/conf/example/instance.properties \ -v /opt/docker/canal/logs:/home/admin/canal-server/logs \ --network=host \ # 推荐使用 host 网络模式避免端口映射问题(网页6] canal/canal-server:v1.1.5
四、验证部署
- 检查日志
成功日志包含docker logs -f canal-server
Canal connector has connected to mysql_host:3306
五、注意事项
- 版本选择:v1.1.5 较稳定,v1.1.6 可能存在配置兼容性问题(网页7]
- 内存限制:建议容器内存分配 ≥2GB,避免 OOM 错误(网页5]
- 持久化配置:定期备份
/opt/docker/canal/conf
目录防止配置丢失(网页1]
附:多实例部署
若需监控多个数据库实例,可通过挂载多个 instance.properties
文件并指定不同 canal.destinations
# 在 canal.properties 中指定多个实例名
canal.destinations = instance1,instance2
# 为每个实例创建独立的配置文件目录
mkdir /opt/docker/canal/conf/{instance1,instance2}