news 2026/6/10 22:28:34

Canal-deployer1.1.8监听mysql数据变化(windows)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Canal-deployer1.1.8监听mysql数据变化(windows)

参考:

https://blog.csdn.net/zhouzhiwengang/article/details/128900318 https://www.cnblogs.com/xfeiyun/p/17468158.html

Mysql

查看是否开启binlog
show VARIABLES like 'log_bin'; 如果值为“OFF”,则需修改为“ON”,方法: 1、修改配置文件 2、执行全局命令:set global log_bin='ON';

修改配置文件,配置binlog相关参数

#binlog文件名 log-bin=mysql-bin #binlog日志模式 binlog_format=ROW #mysql的server_id不能和canal的slaveId相同 server_id=1
重启mysql服务
在mysql中添加canal后续需要连接mysql的用户,并添加相应权限
CREATE USER 'canal'@'%' IDENTIFIED BY 'canal'; GRANT SHOW VIEW, SELECT, REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'canal'@'%'; FLUSH PRIVILEGES;

canal部署

下载并解压

地址:https://github.com/alibaba/canal/releases/tag/canal-1.1.8

解压后得到文件目录: |- bin |- conf |- lib |- logs |- plugin
配置文件

打开“conf/example/instance.properties”,先看以下参数:

#数据库路径 canal.instance.master.address=127.0.0.1:3306 #监听mysql的binlog日志 注:该处填写内容可使用“show master status”查看 canal.instance.master.journal.name=mysql-bin.000086 #mysql binlog日志 监听开始位置 canal.instance.master.position=423105 canal.instance.master.timestamp= canal.instance.master.gtid= # multi stream for polardbx canal.instance.multi.stream.on=false # table meta tsdb info # “元数据存储账号”设置,用于Canal内部元数据存储 #是否开启元数据管理,true - 开启 canal.instance.tsdb.enable=true #连接mysql数据库 canal.instance.tsdb.url=jdbc:mysql://127.0.0.1:3306/test #mysql用户名(注:该账号需要有创建、修改数据库表的权限) canal.instance.tsdb.dbUsername=root #mysql密码 canal.instance.tsdb.dbPassword=root # username/password # “MySQL主库认证账号”设置,用于Canal与MySQL主库的连接,需具备“REPLICATION SLAVE”权限 #mysql用户名 canal.instance.dbUsername=canal #mysql密码 canal.instance.dbPassword=canal canal.instance.connectionCharset = UTF-8 # enable druid Decrypt database password canal.instance.enableDruid=false
注:可能会用到的mysql命令
# 查看当前服务器使用的biglog文件及大小 show binary logs; # 查看最新一个binlog日志文件名称和Position show master status; # 查看 binlog 日志列表 show master logs;
canal启动

打开"bin"目录,双击“startup.bat”

查看日志(logs/example/example.log),如下内容,则启动正常
2025-12-17 11:40:51.679 [destination = example , address = /127.0.0.1:3306 , EventParser] WARN c.a.o.c.p.inbound.mysql.rds.RdsBinlogEventParserProxy - ---> find start position successfully, EntryPosition[included=false,journalName=mysql-bin.000086,position=422919,serverId=1,gtid=,timestamp=1765934352000] cost : 3226ms , the next step is binlog dump 2025-12-17 11:40:51.701 [destination = example , address = /127.0.0.1:3306 , EventParser] WARN c.a.otter.canal.parse.inbound.mysql.MysqlConnection - load MySQL @@version_comment : MySQL Community Server (GPL)

所遇问题

1、mysql连接失败(查看的日志路径:logs/example/example.log)

报错:

### Error querying database. Cause: org.springframework.jdbc.CannotGetJdbcConnectionException: Failed to obtain JDBC Connection; nested exception is com.alibaba.druid.pool.DataSourceClosedException: dataSource already closed at Wed Dec 17 11:08:56 CST 2025 ### The error may exist in spring/tsdb/sql-map/sqlmap_snapshot.xml ### The error may involve com.alibaba.otter.canal.parse.inbound.mysql.tsdb.dao.MetaSnapshotMapper.findByTimestamp ### The error occurred while executing a query

原因:
因为1.1.8目前默认使用的是mysql5.0的驱动,但是我的是mysql8,所以需要换驱动

解决方法:

1、下载驱动,路径“https://downloads.mysql.com/archives/c-j/”,选择相应的mysql版本,“Operating System”选择“Platform Independent” 2、解压文件,将得到的“.jar”文件,复制到canal目录下的“lib”中 3、修改文件配置的驱动 a、打开“conf/canal.properties”文件,然后找到参数“canal.instance.tsdb.spring.xml”,值“spring/tsdb/h2-tsdb.xml”,则修改文件的路径为“conf/spring/tsdb/h2-tsdb.xml” b、打开“conf/spring/tsdb/h2-tsdb.xml”文件,找到“<property name="driverClassName" value="org.h2.Driver" />” c、将“value”值改为“com.mysql.cj.jdbc.Driver”
2、mysql用户权限问题

报错:

### Error querying database. Cause: java.sql.SQLSyntaxErrorException: Table 'test.meta_snapshot' doesn't exist ### The error may exist in spring/tsdb/sql-map/sqlmap_snapshot.xml ### The error may involve com.alibaba.otter.canal.parse.inbound.mysql.tsdb.dao.MetaSnapshotMapper.findByTimestamp-Inline ### The error occurred while setting parameters

原因:
在“conf/example/instance.properties”配置的参数“canal.instance.tsdb.dbUsername”,值为“canan”,也就是使用的是mysql中的“canal”账号,之前“canal”账号分配的权限并没有创建表的权限,所以查询时会报表不存在

解决方法:
更换为有创建表权限的用户或者是给“canal”添加相应权限(注:由于是在测试环境,所有我直接使用了mysql默认账号“root”)

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/10 5:00:49

为什么你的VSCode无法访问量子硬件?深度剖析权限模型与修复方案

第一章&#xff1a;VSCode 量子硬件的权限配置在开发与量子计算硬件交互的应用程序时&#xff0c;本地开发环境的安全性与访问控制至关重要。VSCode 作为主流的集成开发环境&#xff0c;需通过精确的权限配置确保对量子设备 API 的安全调用。合理的权限设置不仅能防止未授权访问…

作者头像 李华
网站建设 2026/6/10 10:50:23

网安人才缺口480万!3个相关专业特点大不同,一文分清

网安人才缺口 480 万&#xff01;3 个相关专业特点大不同&#xff0c;一文分清 9月16日&#xff0c;工业和信息化部教育与考试中心等部门联合发布《AI 时代网络安全产业人才发展报告&#xff08;2025&#xff09;》。报告指出&#xff0c;2025年全球网络安全人才缺口已升至480…

作者头像 李华
网站建设 2026/6/10 2:49:09

Grafana中文版终极指南:5分钟快速搭建监控仪表盘

Grafana中文版终极指南&#xff1a;5分钟快速搭建监控仪表盘 【免费下载链接】grafana-chinese grafana中文版本 项目地址: https://gitcode.com/gh_mirrors/gr/grafana-chinese Grafana中文版是一款专为中国用户量身定制的监控仪表盘汉化项目&#xff0c;基于官方Grafa…

作者头像 李华
网站建设 2026/6/10 10:49:27

FanControl深度解析:构建智能温控系统的关键技术实践

FanControl深度解析&#xff1a;构建智能温控系统的关键技术实践 【免费下载链接】FanControl.Releases This is the release repository for Fan Control, a highly customizable fan controlling software for Windows. 项目地址: https://gitcode.com/GitHub_Trending/fa/…

作者头像 李华
网站建设 2026/6/10 1:44:10

【量子计算开发新纪元】:VSCode模拟器调试的7个关键优势

第一章&#xff1a;量子计算开发新纪元的开启量子计算正从理论探索迈向工程实现的关键阶段&#xff0c;全球科技巨头与初创企业纷纷投入资源&#xff0c;推动软硬件协同创新。开发者不再局限于模拟环境&#xff0c;而是可以直接访问真实量子处理器&#xff0c;通过云平台编写、…

作者头像 李华
网站建设 2026/6/10 12:35:01

程序员面试必备的Java八股文,适合所有的Java求职者!

说明 本文分享Java后端真实高频面试题&#xff0c;有详细答案&#xff0c;保你稳过面试。题目包括&#xff1a;Java基础、多线程、JVM、数据库、Redis、Shiro、Spring、SpringBoot、MyBatis、MQ、ELK、SpringCloud、设计模式等。 包含从简单到困难、从高频到低频的题目&#x…

作者头像 李华