跳转到主内容
新派编程网 - 新潮编程理念,全新技术课堂!

如何使用Docker容器部署开源数据同步平台Canal

Docker 部署 Canal 的核心三步是:配置 MySQL 的 ROW 格式 Binlog、创建具备复制权限的 canal 用户、运行并配置 canal-server 容器;全程无需手动安装 Java 或编译,镜像开箱即用,10 分钟内可完成基础同步验证。 用 Docker 部署 Canal 很直接,核心是三步:配好 MySQL 的 Binlog、拉起 Canal 容器、连通两者。整个过程不需要装 Java 环境或手动编译,镜像开箱即用,10 分钟内就能跑通基础同步。 MySQL 必须开启 ROW 格式 Binlog Canal 依赖 MySQL 的 binlog 日志,且只支持 ROW 模式——它能精确记录每一行数据的变更,避免语句级或混合模式带来的解析歧义。 启动 MySQL 容器时,通过 command 参数内联配置,例如: --log-bin=/var/lib/mysql/mysql-bin --binlog-format=ROW --server-id=1 若已运行,需挂载自定义配置文件(如
/etc/mysql/conf.d/my.cnf
),在
[mysqld]
下添加: log-bin=mysql-binbinlog-format=ROWserver-id=1binlog-row-image=FULL 进 MySQL 执行验证: SHOW VARIABLES LIKE 'log_bin'; → 应返回 ONSHOW VARIABLES LIKE 'binlog_format'; → 应返回 ROWSHOW VARIABLES LIKE 'binlog_row_image'; → 应返回 FULL 创建 Canal 专用数据库用户 Canal 以从库身份连接 MySQL,需要具备复制权限,不能只给普通读写权限。 Docker Desktop(windows) 当前 Docker 最新稳定版本之一,主要针对稳定性和兼容性进行了修复优化,适合生产环境与日常开发使用。该版本继续强化 AI 开发支持、容器日志管理以及 Docker Engine 的安全能力,对 Windows/macOS/Linux 平台兼容性进行了进一步优化。 下载 进入 MySQL 容器执行: CREATE USER 'canal'@'%' IDENTIFIED WITH mysql_native_password BY 'canal'; 授权关键三项: GRANT SELECT, REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'canal'@'%';FLUSH PRIVILEGES; 注意 :host 用
'%'
是为方便容器间通信;生产环境建议限定为 Canal 容器 IP 或子网。 运行 Canal 容器并配置实例 官方镜像
canal/canal-server
默认启动一个示例 instance,你只需告诉它怎么连 MySQL。 拉取并运行(推荐 v1.1.7 或更新 LTS 版): dockerrun -d \--name canal-server \-p 11111:11111 \--link mysql-canal:mysql \-e canal_server_host=mysql:3306 \-e canal_admin_user=canal \-e canal_admin_password=canal \canal/canal-server:v1.1.7 进容器修改
conf/example/instance.properties
: canal.instance.master.address=mysql:3306canal.instance.dbUsername=canalcanal.instance.dbPassword=canalcanal.instance.mysql.slaveId=10 (必须 ≠ MySQL 的 server-id) 重启容器使配置生效: docker restart canal-server 验证是否连接成功 别急着写代码,先看日志确认 Canal 已“握手”MySQL。 实时查看实例日志: docker exec -it canal-server tail -f canal-server/logs/example/example.log 正常会看到类似: "start successful..." 和 "subscribe filter table: .*\..*" (表示已监听所有库表) 在 MySQL 中执行一条 INSERT 或 UPDATE,几秒内日志应出现 "parse row event : ..." 行,说明增量变更已被捕获。

相关文章