Canal报错总结(一)

本文涉及的产品
RDS AI 助手,专业版
RDS MySQL DuckDB 分析主实例,集群系列 4核8GB
RDS DuckDB + QuickBI 企业套餐,8核32GB + QuickBI 专业版
简介: Canal报错总结

总算是跑起来了,看看效果吧

这是我的SQL 表里面插入数据 刷新下就可以看到已经查询出来了

canal报错nosuchmethod ..bytebuffer

解决方法:更新jdk版本与es一致

cancal报错 config dir not found

替换classpath中间封号两边的值

canal控制台乱码

将其改为GBK即可

ERROR c.a.otter.canal.adapter.launcher.loader.AdapterProcessor - java.lang.NullPointerException

网上都说是需要改yml里面的SQL,表要设置别名,然而我试了,没有效果。。。 没办法,debug源码看看,这边能看到,是别名不匹配导致的 这里为null导致的异常,一看就是个BUG,这里呢继续跟踪,追到下面能看到解析的时候使用了sqlidentifierexpr,导致owners为空 如果不想为空,需要让他走sqlpropertyexpr,那么如何让他走呢?要给所有字段加上别名才行,这样问题就解决啦

Unknown system variable 'query_cache_size'

这是因为mysql驱动包的版本过低导致的,query cache在MySQL5.7.20就已经过时了,而在MySQL8.0之后就已经被移除了 1、只需要将lib中的驱动器替换成mysql-connector-java-8.0.22.jar 2、修改驱动器权限

Reason: No converter found capable of converting from type [java.lang.String] to type [java.util.Map<java.lang.String, java.lang.String>]

启动canal-adapter报错: 观察报错信息可以得知是配置文件中的outer2(0基,所以outer-adapter[1]实际指的是2)的properties配置有问题,我们观察配置文件,发现是properties下的mode,cluster.name等属性与properties同级了,将其如下图所示后退两字符即可。

RuntimeException: java.lang.RuntimeException: No data source found: xxxx

这个因为在conf/es/xxx.yml中配置的dataSourceKey并没有在conf/application.yml中的srcDataSources中维护 如下图所示,es中的dataSourceKey需要在applicaiton.yml中设置,默认是defaultDS

Reason: Unable to set value for property src-data-sources

原因一: mysql驱动器导致的问题,使用的数据库是8.x。驱动器是5.x的,将mysql驱动替换为8.0.x版本的。如上所示报错1 原因二: 检查该报错前的日志,是否有其他相关报错信息,比如无相关数据库,如下所示,根据其报错内容来检查配置项并且调整即可

java.sql.SQLException: null, message from server: "Host '172.16.188.2' is blocked because of many connection errors; unblock with 'mysqladmin flush-hosts'"

同一个ip在短时间内产生太多中断的数据库连接而导致的阻塞 登录对应的mysql,执行如下指令

IllegalStateException: Extension instance(name: es7, class: interface com.alibaba.otter.canal.client.adapter.OuterAdapter) could not be instantiated: class could not be found

一般 could not be instantiated: class could not be found这样的报错是配置文件的问题,如上的报错可以看到是name: es7中的错误,在官方的示例文档中使用的是name: es6 # or es7。 在canal1.1.5+版本中设置的是name: es6 # 或者es7 但在1.1.4版本中直接使用name: es即可

IllegalArgumentException: Not found the mapping info of index: user

1、这个报错是ES的mapping设置的问题,确保es中有该索引,并且确认是否有部分字段没有在es中设置mapping,这个要对应之前设置的sql,以及es中的mappings来解决 2、使用了elasticsearch 7.x,但adapter1.1.4默认支持es6.x 解决方案: (1)修改adapter源码,将es依赖调整为7.x;参考博客adapter1.1.4修改源码支持es7.x (2)换成adapter1.1.5

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。 &nbsp; 相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情:&nbsp;https://www.aliyun.com/product/rds/mysql&nbsp;
相关文章
|
canal SQL 关系型数据库
Canal报错总结(三)
Canal报错总结(三)
|
canal 关系型数据库 MySQL
cancal 同步mysql数据到es中
cancal 同步mysql数据到es中
660 1
|
canal SQL JSON
Elastic: canal数据同步到ES配置常见报错
所有报错均为博主在实操过程中遇到的错误和解决办法,如果有其他报错或者不同的解决办法,请留言告诉我 安装canal过程中遇到问题,先在本文中查询是否有相同报错,将会为你节约大量排错时间
1634 0
Elastic: canal数据同步到ES配置常见报错
|
canal 关系型数据库 MySQL
Canal服务搭建
Canal服务搭建
1607 1
Canal服务搭建
|
6月前
|
canal 缓存 关系型数据库
|
8月前
|
canal 关系型数据库 MySQL
数据同步神器-Canal
Canal是阿里巴巴开源的MySQL增量日志解析工具,通过模拟MySQL主从复制机制,实时捕获数据库变更,实现数据同步至Kafka、Elasticsearch等系统,广泛应用于数据同步、监控、备份与迁移场景。
6270 5
|
canal 关系型数据库 MySQL
使用Canal同步mysql数据到es(上)
使用Canal同步mysql数据到es
|
canal 监控 关系型数据库
Canal使用和安装总结
Canal使用和安装总结
1455 3
|
canal 缓存 关系型数据库
Spring Boot整合canal实现数据一致性解决方案解析-部署+实战
Spring Boot整合canal实现数据一致性解决方案解析-部署+实战