java整合Canal实现数据库监听(附完整的踩坑总结)

本文详细介绍了如何在MySQL中启用binlog日志,配置Canal服务端与MySQL的连接,使用Docker部署canal-server,以及在Java中通过canal-client实现数据同步,包括授权、配置和示例代码。遇到的问题和解决方案也进行了总结。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. 准备工作

1.1. MySQL开启binlog日志

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

修改完成后输入: show variables like 'log_bin';查看binlog是否生效

show variables like 'log_bin';

1.2. 授权 canal 链接 MySQL 账号具有作为 MySQL slave 的权限

-- 创建一个用户名密码均为canal的账户
CREATE USER canal IDENTIFIED BY 'canal';  
-- 授予用户'canal'在所有数据库和表上进行SELECT查询以及复制从库和复制客户端的权限,并且允许该用户从任何主机连接到数据库服务器。
GRANT SELECT, REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'canal'@'%';
-- 刷新权限
FLUSH PRIVILEGES; 

2. 正式开始

2.1. 采用doker部署canal-server

2.1.1. 使用docker拉取最新版canal服务端
docker pull canal/canal-server:latest
2.1.2. 使用docker run命令创建容器并挂载配置文件所在的数据卷

# -v 本地的instance.properties:容器的instance.properties将容器的instance.properties配置文件挂载到宿主机,方便后续变更
docker run \
--name mycanal \
-p 11111:11111 \
-v /tmp/canal/conf2/instance.properties:/home/admin/canal-server/conf/example/instance.properties \
 -d \
 canal/canal-server

2.2. 修改配置文件

进入数据卷挂载的目录新建一个instance.properties文件 修改配置如下

## mysql serverId 不能和mysql相同
canal.instance.mysql.slaveId = 1234  
#position info,需要改成自己的数据库信息
canal.instance.master.address = 127.0.0.1:3306 
canal.instance.master.journal.name = 
canal.instance.master.position = 
canal.instance.master.timestamp = 
#canal.instance.standby.address = 
#canal.instance.standby.journal.name =
#canal.instance.standby.position = 
#canal.instance.standby.timestamp = 
#username/password,需要改成自己的数据库信息 此处采用刚刚创建的用户
canal.instance.dbUsername = canal   
canal.instance.dbPassword = canal
canal.instance.defaultDatabaseName =
canal.instance.connectionChars
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

喂不饱的小陶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值