一、引言
Alibaba Canal 是阿里巴巴开源的一款基于 MySQL 数据库增量日志解析的中间件,广泛应用于数据同步、缓存刷新等场景。为帮助开发者快速上手并掌握 Canal 的部署方法,本手册聚焦于 Canal 的安装与配置,提供基于 Docker 容器化环境的单点及集群部署指南(包括 Docker 命令行和 Docker Compose 编排),内容涵盖环境准备、镜像获取、单机部署以及集群部署,旨在让读者能够独立完成 Canal 环境的搭建,并理解不同部署方式的适用场景。所有部署操作均基于 Docker,建议读者提前具备 Docker 基础。
本手册面向初次接触 Canal、希望快速搭建环境进行测试或学习的开发者,也适合已有 Canal 使用经验、需要参考容器化部署方案的系统运维或架构师。无论你处于哪个阶段,都可以通过本手册掌握 Canal 的基础部署技能,为后续的数据同步应用打下坚实基础。
二、环境准备
在部署 Canal 之前,需要确保基础环境满足运行要求。本章节将详细介绍部署所需的软硬件条件、MySQL 配置要求以及 Docker 环境的准备步骤。
2.1 软硬件要求
Canal 基于 Docker 容器化部署,对宿主机的要求相对宽松,建议配置如下:
- 操作系统:Linux(推荐 CentOS 7+ 或 Ubuntu 18.04+)、macOS 或 Windows(支持 Docker Desktop 的环境)
- CPU:最低 2 核,推荐 4 核及以上
- 内存:最低 4 GB,推荐 8 GB 及以上(Canal Server 本身占用约 512 MB - 1 GB,剩余供 Docker 和系统使用)
- 磁盘:预留 20 GB 以上可用空间(用于存储 Docker 镜像和容器日志)
- Docker 版本:18.06.0 及以上版本
- Docker Compose 版本:2.0.0 及以上版本(如使用 Compose 部署)
2.2 MySQL 环境配置
Canal 通过模拟 MySQL slave 节点来解析 binlog,因此源端 MySQL 必须开启 binlog 并配置为 ROW 格式。
-
检查源端 MySQL 版本
当前的 Canal 支持源端 MySQL 版本包括 5.1.x , 5.5.x , 5.6.x , 5.7.x , 8.0.x。可使用如下 SQL 语句在源端 MySQL 库中执行,以查看源端库的版本号。
sqlSELECT VERSION(); -
确认 binlog 格式
-
检查 binlog 是否开启
sqlSHOW VARIABLES LIKE 'log_bin'; -- 应返回 ON -
检查 binlog 格式
sqlSHOW VARIABLES LIKE 'binlog_format%'; -- 应返回 ROW -
检查 binlog_row_image
sqlSHOW VARIABLES LIKE 'binlog_row_image'; -- 应返回 FULL
若上述确认结果与预期不符,则需要通过调整 MySQL 配置文件(my.cnf 或 my.ini),在 [mysqld] 段落下添加以下配置:
ini[mysqld] # 设置 server-id,同一局域网内需唯一 server-id = 123 # 开启 binlog,指定文件名前缀 log-bin = mysql-bin # 设置 binlog 格式为 ROW(必须) binlog-format = ROW # 设置 binlog 镜像类型为 FULL(记录完整行数据) binlog_row_image = FULL # binlog 保留天数,建议至少保留 2 天 expire_logs_days = 10 -
-
创建 Canal 专用数据库用户(需 root 权限)
Canal 需要连接 MySQL 并读取 binlog,建议创建一个专用账号并授予相应权限,以便于源端 MySQL 的维护工作。
-
创建用户
用户名/密码可自定义,本文以 canal/canal 为例。
sqlCREATE USER 'canal'@'%' IDENTIFIED BY 'canal'; -
授予权限
必须包含
REPLICATION SLAVE和REPLICATION CLIENT。sqlGRANT SELECT,REPLICATION SLAVE,REPLICATION CLIENT ON *.* TO 'canal'@'%'; -- GRANT ALL PRIVILEGES ON *.* TO 'canal'@'%' ;权限说明:
REPLICATION SLAVE:用于获取 binlog 的权限;REPLICATION CLIENT:用于检查 master 状态的权限;SELECT:可选的读取权限,用于某些场景下的元数据查询。
-
刷新权限
sqlFLUSH PRIVILEGES; -
权限确认
sqlSHOW GRANTS FOR 'canal';
-
三、镜像获取
Canal 官方提供了完整的 Docker 镜像,可直接从 Docker Hub 拉取使用。本章介绍如何获取 Canal 相关的 Docker 镜像,包括 Server、Adapter 和 Admin 组件。
3.1 镜像说明
Canal 项目在 Docker Hub 上主要提供以下镜像:
- canal/canal-server:Canal 核心服务镜像,包含 binlog 解析和分发功能;
- canal/canal-admin:可选组件,提供 Canal Server 集群的配置和管理功能。
本文编写时,Canal 最新稳定版本为 v1.1.8。该版本主要更新包括适配 MySQL 8.4、Mariadb 11 等新版本数据库,修复多项稳定性问题,并优化了 Docker 启动权限。
3.2 镜像拉取
3.2.1 在线环境
在具备互联网访问的主机上,直接使用 docker pull 命令从 Docker Hub 拉取指定版本的 Canal 镜像。
-
拉取 Canal Server 镜像
shelldocker pull canal/canal-server:v1.1.8如需拉取最新版本(理论上是每日构建,不推荐生产环境使用)。
shelldocker pull canal/canal-server:latest -
拉取 Canal Admin 镜像(可选)
如需使用 Admin 进行集群管理,可拉取对应镜像:
shelldocker pull canal/canal-admin:v1.1.8 -
验证镜像拉取结果
查看本地已拉取的镜像。
shelldocker images | grep canal预期输出结果示例:

3.2.2 离线环境(可选)
对于部分用户的实际部署环境无法直接访问互联网,需要在一台能联网的机器上预先拉取镜像,保存为 tar 文件,再将文件传输至目标主机进行导入。
-
将镜像保存为 tar 文件
shelldocker save -o canal-server-v1.1.8.tar canal/canal-server:v1.1.8 docker save -o canal-admin-v1.1.8.tar canal/canal-admin:v1.1.8在已成功拉取 canal 镜像的机器上执行上述命令后,将在当前目录下生成个名为 canal-server-v1.1.8.tar 和 canal-admin-v1.1.8.tar 的文件,再将此二文件拷贝到目标机器上。
-
在离线主机上导入镜像
shelldocker load -i canal-server-v1.1.8.tar docker load -i canal-admin-v1.1.8.tar -
验证镜像加载结果
shelldocker images | grep canal导入后的镜像名称和标签与原保存时一致,可直接用于部署。
四、Docker 单点部署
Docker 单点部署是指在单台主机上通过 Docker 容器运行 Canal 组件(如 Server、Admin)的方式。这种方式能够快速启动 Canal 服务,主要用于功能验证或开发测试,强烈不推荐用于生产环境。
Canal 支持两种运行模式:独立模式与托管模式。独立模式下,Server 通过本地配置文件进行管理,适用于单机测试或无需集中管控的场景;托管模式下,Server 注册到 Admin,由 Admin 统一推送配置并监控状态,适用于集群部署或需要集中管理的生产环境。读者需根据实际场景择其一使用。
4.1 独立模式:Canal Server 单点部署
Canal Server 是 Canal 的核心组件,负责模拟 MySQL slave 节点,拉取并解析 binlog,为客户端提供数据订阅服务。

官方提供了便捷部署脚本 run.sh(使用说明见 Docker-QuickStart),但该脚本使用的镜像为 canal/canal-server,未指定具体版本标签,默认拉取 latest 版本,可能导致部署版本不可控。因此,在需要版本固定的场景下,建议直接使用 docker run 命令并明确指定版本标签(例如 canal/canal-server:v1.1.8)。为快速启动,下面给出核心命令,读者可直接在宿主机终端执行。
-
启动容器
下述命令以
kafka模式启动,Canal 会将解析到的数据变更以预定义格式发送到指定的 Kafka 主题。如需使用自定义客户端直接消费数据(即tcp模式),则需将环境变量canal.serverMode设置为tcp,并映射 Canal 的服务端口(默认 11111),即添加-p 11111:11111参数。shelldocker run -d --name=canal-standalone -m 4096m \ -e canal.instance.tsdb.enable=false \ -e canal.serverMode=kafka \ -e kafka.bootstrap.servers=172.21.190.174:9092 \ -e canal.mq.topic=example \ -e canal.destinations=example \ -e canal.instance.master.address=172.21.190.174:13306 \ -e canal.instance.dbUsername=canal \ -e canal.instance.dbPassword=canal \ -e canal.instance.filter.regex=.*\\..* \ canal/canal-server:v1.1.8参数说明:
-d:后台运行容器。--name:指定容器名称。-m 4096m:限制容器内容为 4096MB。-e:设置环境变量,可覆盖 canal.properties/instance.properties 中的所有配置项(Spring Boot 启动时会读取这些变量,具体可参考 AdminGuide)。
✏️ 提示
docker 模式下,单 docker 实例只能运行一个 instance,主要为配置问题。如果需要运行多 instance 时,可以自行制作一份 docker 镜像即可。
-
检查状态
-
检查容器状态
查询名为 canal-standalone 的容器状态命令:
shelldocker inspect --format='{{.State.Status}}' canal-standalone若输出的状态结果为
running,则表示容器已启动。 -
检查服务健康状态
shelldocker exec -it canal-standalone /home/admin/health.sh仅当返回的结果为
[ OK ]时,则表示 Canal Server 服务已正确启动。若结果与预期不符,则可通过下述命令查看服务日志的方式定位原因。shelldocker exec -it canal-standalone tail -f /home/admin/canal-server/logs/canal/canal.log docker exec -it canal-standalone tail -f /home/admin/canal-server/logs/example/example.log -
检查数据
可在源端库中执行数据变更,然后再到目标端 Kafka 中查询变更的数据是否已完成同步,下为在 Kafka 终端消费 Topic 名为 example 的命令。
shellbin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --from-beginning --topic example上述命令需要在 Kafka 的主目录下执行,且需要将 localhost 更换为是真实的目标 Kafka 节点名或 IP。
-
-
清理容器(可选)
当 Canal Server 服务完成测试或不再需要时,可执行以下命令停止并删除容器,以释放系统资源:
shelldocker stop canal-standalone # 停止容器 docker rm canal-standalone # 删除容器如需强制删除运行中的容器,可直接使用
docker rm -f canal-standalone。建议:在执行删除操作前,确保已备份重要数据或确认容器不再需要。
4.2 托管模式:Canal Server 对接 Admin 部署

4.2.1 部署 Canal Admin
Canal Admin 是 Canal 的可选组件,用于集中管理 Canal Server 集群,提供配置管理、节点监控等功能。
虽然官方提供了便捷部署脚本 run_admin.sh(使用说明见 Canal-Admin-Docker),但脚本使用的镜像为 canal/canal-admin,未指定具体版本标签,默认拉取 latest 版本。这意味着每次执行脚本时,可能拉取到不同的最新镜像,导致部署的版本与预期不符,或后续运行因镜像更新而产生兼容性问题。
因此,在需要版本固定的场景下,建议手动修改脚本中的镜像名称,或直接使用 docker run 命令并明确指定版本标签,例如 canal/canal-admin:v1.1.8,以确保版本可控。为快速启动,下面从脚本中提取核心命令,读者可直接在宿主机终端执行。
-
启动容器
shelldocker run -d --name=canal-admin -p 8089:8089 -m 1024m -e canal.adminPasswd=canal canal/canal-admin:v1.1.8参数说明:
-d:后台运行容器。--name:指定容器名称。-p 8089:8089:映射容器内 8089 端口到宿主机,供 Web 访问。-m 1024m:限制容器内容为 1024MB。-e:设置环境变量,可覆盖 application.yml 中的配置项(Spring Boot 启动时会读取这些变量)。
💡 提示
参数
canal.adminPasswd表示的是 Server 端连接 Admin 的密码 ,而非是 Admin 控制台的登录密码(登录密码在初始化数据库时定义),该值不允许为空,原因详见 issues#4941。 -
检查状态
-
检查容器状态
shelldocker inspect --format='{{.State.Status}}' canal-admin若输出的状态结果为
running,则表示容器已启动。 -
检查服务健康状态
若此容器所在宿主机的性能较差,则需要多等待一会儿,具体等待时间取决于机器配置。
shelldocker exec -it canal-admin /home/admin/health.sh仅当返回的结果为
[ OK ]时,则表示 Canal Admin 服务已正确启动。若结果与预期不符,则可通过下述命令查看服务日志的方式定位原因。shelldocker exec -it canal-admin tail -f /home/admin/canal-admin/logs/admin.log
-
-
浏览器登录
在浏览器中访问
http://<宿主机IP>:8089/(将<宿主机IP>替换为实际 IP)。默认登录账号为admin,密码为123456(该密码在初始化数据库时预设,如需修改请参考官方文档)。 -
清理容器(可选)
当 Canal Admin 服务完成测试或不再需要时,可执行以下命令停止并删除容器,以释放系统资源:
shelldocker stop canal-admin # 停止容器 docker rm canal-admin # 删除容器如需强制删除运行中的容器,可直接使用
docker rm -f canal-admin。建议:在执行删除操作前,确保已备份重要数据或确认容器不再需要。
4.2.2 部署 Canal Server
Canal Server 是 Canal 的核心组件,负责模拟 MySQL slave 节点,拉取并解析 binlog,为客户端提供数据订阅服务。
官方也提供了便捷部署脚本 run.sh,但该脚本使用的镜像为 canal/canal-server,未指定具体版本标签,默认拉取 latest 版本,可能导致部署版本不可控。因此,在生产环境或需要版本固定的场景下,建议直接使用 docker run 命令并明确指定版本标签(例如 canal/canal-server:v1.1.8)。为快速启动,下面给出核心命令,读者可直接在宿主机终端执行。
-
密文连接密码
在启动 Server 时,存在一个关键参数
canal.admin.passwd,需要做加密处理,其与 Canal Admin 里的canal.adminPasswd对应。密文的生成方式是,在任意 MySQL 中执行如下密文生成 sql 即可。
sqlselect password('canal'); -- mysql5.6/5.7 select upper(sha1(unhex(sha1('canal')))); -- mysql8.0+注意:
password()函数结果的首字母星号需要去除。 -
启动容器
shelldocker run -d --name=canal-server \ -p 11110:11110 \ -m 4096m \ -e canal.admin.manager=172.21.190.174:8089 \ -e canal.admin.user=admin \ -e canal.admin.passwd=E3619321C1A937C46A0D8BD1DAC39F93B27D4458 \ -e canal.admin.register.name=server_node1 \ canal/canal-server:v1.1.8参数说明:
-d:后台运行容器。--name:指定容器名称。-m 4096m:限制容器内容为 4096MB。-e:设置环境变量,可替换 canal_local.properties 中的所有配置项(Spring Boot 启动时会读取这些变量,具体可参考 Canal-Admin-Docker#配套启动canal-server-docker)。-e canal.admin.manager:Admin 端的链接地址。需要更换为宿主机 IP。
-
检查状态
-
检查容器状态
查询名为 canal-server 的容器状态命令:
shelldocker inspect --format='{{.State.Status}}' canal-server若输出的状态结果为
running,则表示容器已启动。 -
检查服务健康状态
shelldocker exec -it canal-server /home/admin/health.sh仅当返回的结果为
[ OK ]时,则表示 Canal Server 服务已正确启动。若结果与预期不符,则可通过下述命令查看服务日志的方式定位原因。shelldocker exec -it canal-server tail -f /home/admin/canal-server/logs/canal/canal.log -
检查注册结果
在浏览器页面位置下,可看见如下内容(启动参数未指定服务具体的 IP,所以自动生成了 Server IP 信息)。

-
-
配置 server
在浏览器的"Server 管理"界面中找到对应 Server 服务行,鼠标悬停到该行的"操作"按钮上,即会弹出详细的操作项,单击"配置"项。

此处仅给出以将源端库数据发送到 Kafka 为目的的最简配置信息。
propertiescanal.serverMode=kafka # kafka模式(第29行) kafka.bootstrap.servers=172.21.190.174:9092 # kafka集群地址(第140行) -
配置 instance
在浏览器的"Instance 管理"界面中单击"新建 Instance"按钮。

分别定义对应该 Instance 的名称(此处示例名称为 example),再选择其所属 Server 服务,然后再点击"载入模板",最后按需调整相关参数。

此处仅给出以将源端库数据发送到 Kafka 为目的的最简配置信息。
propertiescanal.instance.master.address=172.21.190.174:9092 # 源端库地址(第9行) canal.instance.dbUsername=canal # 源端库账户(第33行) canal.instance.dbPassword=canal # 源端库密码(第34行) canal.instance.filter.regex=.*\\..* # 数据过滤规则表达式(第41行) canal.mq.topic=example # Kafka的topic(第50行) -
检查数据
可在源端库中执行数据变更,然后再到目标端 Kafka 中查询变更的数据是否已完成同步,下为在 Kafka 终端消费 Topic 名为 example 的命令。
shellbin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --from-beginning --topic example上述命令需要在 Kafka 的主目录下执行,且需要将 localhost 更换为是真实的目标 Kafka 节点名或 IP。
-
清理容器(可选)
当 Canal Server 服务完成测试或不再需要时,可执行以下命令停止并删除容器,以释放系统资源:
shelldocker stop canal-server # 停止容器 docker rm canal-server # 删除容器如需强制删除运行中的容器,可直接使用
docker rm -f canal-server。建议:在执行删除操作前,确保已备份重要数据或确认容器不再需要。
五、Docker Compose 单点部署
上一章我们使用 docker run 命令完成了 Canal 各组件的单点部署,这种方式直接、简单,适合快速验证。但在实际使用中,docker run 存在一些不便之处:
- 命令冗长难记:每次启动都需要输入一长串参数,容易出错。
- 配置分散:环境变量、端口映射、卷挂载等散落在命令中,无法集中管理。
- 多服务协同复杂:当需要同时启动多个容器(如 Server + Admin)时,需要分别执行多条命令,还要手工控制启动顺序。
- 难以重复使用:换一台机器部署时,需要重新输入命令或翻找历史记录。
Docker Compose 正是为了解决这些问题而生的。它通过一个 YAML 文件定义所有容器的配置,将环境变量、端口映射、依赖关系等固化下来,实现配置即代码 。使用 Compose 后,只需 docker-compose up -d 一条命令即可启动整个服务栈,且配置可版本化管理,便于分享和重现。
本章将使用 Docker Compose 分别实现独立模式 (仅 Canal Server)和托管模式(Canal Server + Canal Admin)的单点部署。读者可根据实际场景选择对应配置。
5.1 独立模式:Canal Server 单点部署
本小节提供基于 Docker Compose 的 Canal Server 独立部署方案,配置内容与 [4.1 节](#4.1 节)的 docker run 命令完全对应。
-
准备 docker-compose.yml
创建文件 docker-compose-standalone.yml,内容如下:
yamlversion: "3.8" services: canal: # 服务的名称(自定义) image: canal/canal-server:v1.1.8 # 使用的镜像及标签 container_name: canal-standalone # 指定容器名称,便于管理 hostname: node1 # 节点名称(自定义) restart: unless-stopped # 容器退出时自动重启(除非手动停止) environment: - canal.destinations=example # destinations名称可自定义 - canal.instance.master.address=172.21.190.174:13306 - canal.instance.dbUsername=canal - canal.instance.dbPassword=canal - canal.instance.filter.regex=".*\\..*" - canal.mq.flatMessage=true - canal.serverMode=kafka # 将消息发往kafka - kafka.bootstrap.servers=172.21.190.174:9092 # kafka集群地址 - kafka.compression.type=lz4 healthcheck: # 健康检查 test: ["CMD", "curl", "-s", "http://127.0.0.1:11112/metrics"] interval: 30s timeout: 7s retries: 7 start_period: 25s deploy: resources: limits: memory: 4096M # 限制容器内存为4096MB(可根据需要调整) networks: - baota_net networks: baota_net: external: true -
启动服务
在 docker-compose-standalone.yml 所在目录执行:
shelldocker-compose -f docker-compose-standalone.yml up -d参数说明:
-d:表示后台运行。- 首次启动会自动拉去镜像(如本地不存在)。
-
检查状态
-
检查容器状态
shelldocker-compose -f docker-compose-standalone.yml ps输出中应显示
canal-standalone的State为Up。 -
检查服务日志
shelldocker-compose -f docker-compose-standalone.yml logs -f canal注意:此命令末尾的
canal是与服务名对应,而非容器名。 -
检查服务健康状态
shelldocker inspect --format='{{.State.Health.Status}}' canal-standalone docker exec -it canal-standalone /home/admin/health.sh仅当返回的结果为
[ OK ]时,则表示 Canal Server 服务已正确启动。若结果与预期不符,则可通过下述命令查看服务日志的方式定位原因。shelldocker exec -it canal-standalone tail -f /home/admin/canal-server/logs/canal/canal.log docker exec -it canal-standalone tail -f /home/admin/canal-server/logs/example/example.log -
检查数据
可在源端库中执行数据变更,然后再到目标端 Kafka 中查询变更的数据是否已完成同步,下为在 Kafka 终端消费 Topic 名为 example 的命令。
shellbin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --from-beginning --topic example上述命令需要在 Kafka 的主目录下执行,且需要将 localhost 更换为是真实的目标 Kafka 节点名或 IP。
-
-
停止与清理容器(可选)
-
停止服务(保留容器)
shelldocker-compose -f docker-compose-standalone.yml stop -
停止并删除容器(不会删除镜像和数据卷)
shelldocker-compose -f docker-compose-standalone.yml down -
如需同时删除匿名数据卷
shelldocker-compose -f docker-compose-standalone.yml down -v
-
5.2 托管模式:Canal Server 对接 Admin 部署
本小节提供基于 Docker Compose 的 Canal Server 对接 Admin 部署方案,配置内容与 [4.2 节](#4.2 节) 的 docker run 命令完全对应。
-
准备 docker-compose.yml
创建文件 docker-compose-canal.yml,内容如下:
yamlversion: "3.8" services: canal-admin: # Admin端服务名称(自定义) image: canal/canal-admin:v1.1.8 # 使用的镜像及标签 container_name: canal-admin # 指定容器名称,便于管理 hostname: node1 # 节点名称(自定义) restart: unless-stopped # 容器退出时自动重启(除非手动停止) ports: # 端口映射信息(宿主机端口:容器端口) - "8089:8089" environment: - canal.adminUser=admin - canal.adminPasswd=123456 # Server端链接密码(不可为空,Server端需密文) healthcheck: # 健康检查 test: ["CMD", "curl", "-s", "http://127.0.0.1:8089/index.html"] interval: 30s timeout: 7s retries: 7 start_period: 30s deploy: resources: limits: # cpus: '1.00' memory: 1024M networks: - canal_net canal-server: # Server端服务名称(自定义) image: canal/canal-server:v1.1.8 # 使用的镜像及标签 container_name: canal-server # 指定容器名称,便于管理 hostname: node2 # 节点名称(自定义) restart: unless-stopped # 容器退出时自动重启(除非手动停止) environment: - canal.admin.manager=node1:8089 - canal.admin.port=11110 - canal.admin.user=admin - canal.admin.passwd=6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 - canal.admin.register.auto=true - canal.admin.register.name=server_node1 healthcheck: # 健康检查 test: ["CMD", "curl", "-s", "http://127.0.0.1:11112/metrics"] interval: 30s timeout: 7s retries: 7 start_period: 25s depends_on: - canal-admin # 优先启动Admin,再启动Server deploy: resources: limits: # cpus: '4.00' memory: 4096M networks: - canal_net networks: canal_net: driver: bridge -
启动服务
在 docker-compose-canal.yml 所在目录执行:
shelldocker-compose -f docker-compose-canal.yml up -d参数说明:
-d:表示后台运行。- 首次启动会自动拉去镜像(如本地不存在)。
-
检查状态
-
检查容器状态
shelldocker-compose -f docker-compose-canal.yml ps输出中应显示
canal-canal的State为Up。 -
检查服务日志
shelldocker-compose -f docker-compose-canal.yml logs -f canal-admin docker-compose -f docker-compose-canal.yml logs -f canal-server注意:此命令末尾的
canal是与服务名对应,而非容器名。 -
检查服务健康状态
-
检查 Admin 服务健康状态
shelldocker inspect --format='{{.State.Health.Status}}' canal-admin docker exec -it canal-admin /home/admin/health.sh仅当返回的结果为
[ OK ]时,则表示 Canal Admin 服务已正确启动。若结果与预期不符,则可通过下述命令查看服务日志的方式定位原因。shelldocker exec -it canal-admin tail -f /home/admin/canal-admin/logs/admin.log -
检查 Server 服务健康状态
shelldocker inspect --format='{{.State.Health.Status}}' canal-server docker exec -it canal-server /home/admin/health.sh仅当返回的结果为
[ OK ]时,则表示 Canal Server 服务已正确启动。若结果与预期不符,则可通过下述命令查看服务日志的方式定位原因。shelldocker exec -it canal-server tail -f /home/admin/canal-server/logs/canal/canal.log docker exec -it canal-server tail -f /home/admin/canal-server/logs/example/example.log
-
-
-
浏览器登录
在浏览器中访问
http://<宿主机IP>:8089/(将<宿主机IP>替换为实际 IP)。默认登录账号为admin,密码为123456(该密码在初始化数据库时预设,如需修改请参考官方文档)。 -
检查注册结果
在浏览器页面位置下,可看见如下内容(启动参数未指定服务具体的 IP,所以自动生成了 Server IP 信息)。

-
配置 server
在浏览器的"Server 管理"界面中找到对应 Server 服务行,鼠标悬停到该行的"操作"按钮上,即会弹出详细的操作项,单击"配置"项。

此处仅给出以将源端库数据发送到 Kafka 为目的的最简配置信息。
propertiescanal.serverMode=kafka # kafka模式(第29行) kafka.bootstrap.servers=172.21.190.174:9092 # kafka集群地址(第140行) -
配置 instance
在浏览器的"Instance 管理"界面中单击"新建 Instance"按钮。

分别定义对应该 Instance 的名称(此处示例名称为 example),再选择其所属 Server 服务,然后再点击"载入模板",最后按需调整相关参数。

此处仅给出以将源端库数据发送到 Kafka 为目的的最简配置信息。
propertiescanal.instance.master.address=172.21.190.174:9092 # 源端库地址(第9行) canal.instance.dbUsername=canal # 源端库账户(第33行) canal.instance.dbPassword=canal # 源端库密码(第34行) canal.instance.filter.regex=.*\\..* # 数据过滤规则表达式(第41行) canal.mq.topic=example # Kafka的topic(第50行) -
停止与清理容器(可选)
-
停止服务(保留容器)
shelldocker-compose -f docker-compose-canal.yml stop -
停止并删除容器(不会删除镜像和数据卷)
shelldocker-compose -f docker-compose-canal.yml down -
如需同时删除匿名数据卷
shelldocker-compose -f docker-compose-canal.yml down -v
-