Canal 主从同步
Canal 主从同步的核心流程是「开启 MySQL Binlog → 配置 Canal(Admin + Deployer)→ 搭建监听服务」
一、前期准备:下载与环境依赖
下载 Canal 组件:从 GitHub Releases 下载 canal.admin-1.1.8 和 canal.deployer-1.1.8 版本。
依赖环境:确保已安装 MySQL(5.7+ 或 8.0+)、JDK 1.8+,Windows/Linux 环境均兼容。
二、关键步骤:MySQL 配置(核心前提)
2.1 开启并验证 Binlog
执行 SQL 查看当前 Binlog 状态,确认 log_bin 为 ON。
# 查看binlog是否开启show variables like "%log_bin%";
# 查看所有binlog日志show master logs;
# 查看最新binlog日志详情 包含文件名和事件时间操作点show master status;
# 新建binlogflush logs;
# 清空所有binlog日志reset master;
修改配置文件(Linux 为 my.cnf,Windows 为 my.ini),添加 server-id、log-bin 等核心配置。
#my.cnf(liunx) my.ini(windows) 开启binlog
[mysqld]
#设置mysql服务的唯一标识,便于区分不同服务实例,用于数据库复制中。
server-id=1024
#开启binlog日志
log-bin=mysql-bin
#设置 MySQL binlog 日志格式为 ROW。
binlog-format=ROW
#记录所有列的新旧值
binlog_row_image = FULL
重启 MySQL 后,通过 SHOW VARIABLES 命令验证 server_id、binlog_format 等参数是否生效。
SHOW VARIABLES LIKE 'server_id';SHOW VARIABLES LIKE 'log_bin';
SHOW VARIABLES LIKE 'binlog_format';
SHOW VARIABLES LIKE 'binlog_row_image';
2.2 创建并授权 Canal 用户
create user 'canal'@'%' identified by 'canal';grant all privileges on *.* to 'canal'@'%';flush privileges;
新建 canal 用户,允许远程访问(% 表示所有地址)。
授予 select、replication slave 等复制必需权限,或直接授予 all privileges 简化配置。
执行 flush privileges 刷新权限配置,确保生效。
三、Canal 配置:Admin + Deployer 部署
3.1 Canal Admin 配置
新建 canal_manager 数据库,导入 conf 目录下的 canal_manager.sql 脚本。
编辑 conf/application.yml,配置数据库连接(指向 canal_manager 库)、端口(默认 8089)等。

启动 Admin:Windows 运行 bin/startup.bat,Linux 执行 bin/startup.sh。
3.2 Canal Deployer 配置
核心配置文件为 conf/canal.properties,无需过多修改,保持默认即可。
启动 Deployer:同样通过 bin 目录下的启动脚本启动,与 Admin 联动。

- canal.properties: Canal 服务器的全局配置文件,包含了 Canal 服务端的一些基础设置。

- 启动canal.admin-1.1.8
Widnows 启动: bin目录下startup.bat
linux启动: bin目录下startup.sh - canal.deployer-1.1.8
Widnows bin目录下startup.bat
linux bin目录下startup.sh
四、管理页操作:添加 Canal 实例
访问 http://127.0.0.1:8089,使用 admin/123456 登录。
添加实例:配置实例名称、MySQL 主库地址、canal 用户名密码,确保实例名称与后续监听服务一致。

修改canal.instance,添加管理信息配置,将canal server(canal 服务)交由canal admin(管理页面管理)

五、本地监听服务:
通过springboot启动canal服务,监听各个instance实例binlog数据版本变化,解析变化的数据;
配置文件中各实例名称需与canal-admin内配置的一致;

spring Boot 集成要点
- 多数据源动态切换:通过配置文件管理主从库连接,实现灵活切换。
- 多实例监听:针对 Admin 中添加的每个实例,建立独立监听线程,解析 Binlog 变化。
- 数据同步与过滤:只同步目标表数据,过滤无效表或无关操作(如删除、临时表操作)。
- 断线重连:开发重试机制,处理 MySQL 主库、Canal 实例、监听服务的断线场景。
- 过滤监听数据源,无效表
六、常见问题排查
Binlog 未生成:检查配置文件是否正确、MySQL 是否重启。
Canal 连接 MySQL 失败:确认用户名密码正确、MySQL 端口开放、防火墙未拦截。
Admin 登录失败:检查 canal_manager 数据库是否导入成功、application.yml 中数据库配置是否正确。
下载地址:https://github.com/alibaba/canal/releases
安装教程:https://blog.csdn.net/liushangzaibeijing/article/details/147331105
