使用canal来监听mysql binlog

本文档详述了如何配置MySQL环境以开启binlog,创建Canal账号,并进行Canal单节点的本机及Docker部署。在客户端验证部分,介绍了添加POM依赖和建立Canal client连接的方法,确保能捕获到MySQL数据变动。在遇到`Misconfigured master - server_id was not set`错误时,提示需检查MySQL配置。

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

mysql环境准备

开启binlog

修改配置文件my.cnf,修改如下内容

log_bin=master-bin
log_bin_index=master-bin.index
binlog_do_db=test
binlog-format=ROW
server-id=1

注意binlog_do_db非必须,其余缺省照填即可,具体字段含义或者高级配置,请自行查询官方文档

准备canal账号

CREATE USER canal IDENTIFIED BY 'canal';    
GRANT SELECT, REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'canal'@'%';  
-- GRANT ALL PRIVILEGES ON *.* TO 'canal'@'%' ;  
FLUSH PRIVILEGES; 

这里创建账号canal同时密码也设置一样的,这里权限只要上面的权限足已,不用开全局权限

部署单节点

本机部署

  1. 通过https://github.com/alibaba/canal/releases找个合适版本下载对应的canal.deployer版本
  2. 解压到任意目录
  3. 然后配置配置conf/canal.properties文件,直接打开注释并修改对应的mysql的地址与账号
anal.manager.jdbc.url=jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=UTF-8
canal.manager.jdbc.username=canal
canal.manager.jdbc.password=canal
canal.destinations = test
  1. 执行bin/startup.sh如果是windows就执行bat后缀的文件
  2. 观察到logs/canal/canal.log以及logs/test/test/log是否存在the canal server is running now ......表示已经跑起来了

使用docker来部署

  1. 输入如下命令来启动
docker run --name canal-server \
-e canal.auto.scan=false \
-e canal.destinations=test \
-e canal.instance.master.address=172.17.0.2:3306 \
-e canal.instance.dbUsername=canal \
-e canal.instance.dbPassword=canal \
-e canal.instance.connectionCharset=UTF-8 \
-e canal.instance.tsdb.enable=false \
-e canal.instance.gtidon=false \
-p 11111:11111 \
-d canal/canal-server:v1.1.3

里面需要注意的是destinations的名字,类似实例名,以及对应的mysql的host,username,password修改即可,这里镜像用可以选用最新的,目前是1.1.3,具体参数可以通过AdminGuide来了解。
2. 进入容器,检查日志是否正常 /home/admin/canal-server/logs/canal/canal.log是否存在the canal server is running now ......表示已经跑起来了
3. 进入容器,检查日志是否正常 /home/admin/canal-server/logs/test/test.log是否存在the canal server is running now ......表示已经跑起来了

客户端验证

pom依赖

        <!-- canal-client -->
        <dependency>
            <groupId>com.alibaba.otter</groupId>
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值