当前位置: 首页 > news >正文

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”)

http://www.rkmt.cn/news/116171.html

相关文章:

  • Java 存储钱取钱作业
  • B站数据分析终极指南:一键掌握UP主内容趋势
  • 选择排序--自学笔记
  • Open Library 终极指南:三步打造你的专属数字图书馆
  • 姿态搜索终极指南:5步构建智能人体动作分析系统
  • 异常传递失败?教你如何在Q#中精准捕获Python异常,90%的人都忽略了这一点
  • 【量子计算开发新纪元】:VSCode模拟器调试的7个关键优势
  • NSTool深度解析:Switch文件格式的终极处理指南
  • 高效OpenUSD场景导出:USDZ与glTF格式深度对比与转换指南
  • AGI的瓶颈不是模型规模,而是这个“协调层“!斯坦福新研究让大模型真正“开窍“
  • 为什么90%的多模态Agent项目在Docker依赖上踩坑?真相来了
  • 2025生活用品自动化生产线集成厂TOP5权威推荐:甄选优质 - myqiye
  • ESP32-S3多SPI设备完美共存:TFT屏幕与SD卡零冲突配置实战
  • 泛微.采知连知识管理平台深度应用DeepSeek,自动采集数据,让问答更安全·准确
  • LobeChat入门教程:打造你的私有AI聊天助手
  • ONNX模型下载终极指南:5种场景化解决方案让你告别龟速下载
  • Mermaid实战指南:10个场景教你用代码绘制专业图表
  • 别再问资质认证怎么查了!看这家公司如何用“大模型搜索”帮客户7天拿下高新认证
  • 3大核心技巧:YOLO11在Docker环境下的RTSP流延迟优化实战
  • 爱创猫靠谱吗?省钱实测报告:无套路功能真的香
  • vue基于Spring Boot框架的技术的课程试卷信息信息管理系统_h83gkh9v
  • 8、量子计算与技术发展:从理论根源到实际应用
  • Moonlight for Tizen:智能电视游戏串流终极指南
  • KuGouMusicApi:打造专业的酷狗音乐开发接口服务
  • 29、实现 SNMP MIB 及 RTA 参考指南
  • Jellyfin Bangumi插件3分钟配置攻略:告别混乱的动画收藏管理
  • 省钱不打折!爱创猫靠谱 AI 服务,功能全还便宜
  • 3步打造高颜值Obsidian:从新手到美化达人终极指南
  • DeeplxFile终极指南:免费文件翻译的完整解决方案
  • 【Electron教程】第1节 Electron 简介与环境搭建 - 教程