首页 > 其他分享 >Canal报错总结

Canal报错总结

时间:2024-01-25 10:34:05浏览次数:44  
标签:Canal 总结 java name adapter 报错 mysql es

这是我的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

IllegalArgumentException: Illegal character in scheme name at index 0: 172.16.188.7:9200

如果连接es使用的是rest方式,那么hosts中的ip前要添加http://,如

com.alibaba.druid.pool.DruidDataSource cannot be cast to com.alibaba.druid.pool.DruidDataSource

原因:
druid 包冲突
1、修改client-adapter/escore/pom.xml

2、重新打包

3、将client-adapter/es7x/target/client-adapter.es7x-1.1.5-jar-with-dependencies.jar上传到服务器,替换adataper/plugin下的同名jar文件

4、给该文件赋权

5、重启服务

CanalParseException: java.io.IOException: EOF encountered

将lib目录下的mysql驱动器替换为mysql8.0,并附权。参考上述

CanalClientException: java.io.IOException: Broken pipe Error sync but ACK

服务连接断开了,将deployer和adapter都关闭,先启动deployer再启动adapter

DocumentMissingException[_doc: document missing]

1、es集群出现问题,导致doc无法分配。常见的是分片数的问题,可能是副本分片过多,导致集群报黄
解决:
因为我的是es单节点,所以将主分片数设置为1,副本分片设置为0。不申明的话默认创建副本分片数为1

2、修改的mysql数据库数据,在es中不存在。先进行全量同步,再进行增量同步
在conf/example/instance.properties中修改

ERROR c.a.otter.canal.server.netty.handler.SessionHandler - something goes wrong with channel:[id: 0x23d9cad9, /127.0.0.1:46472 :> /127.0.0.1:11111], exception=java.nio.channels.ClosedChannelException

 

标签:Canal,总结,java,name,adapter,报错,mysql,es
From: https://www.cnblogs.com/shenyixin/p/17986491

相关文章

  • canvas绘制图形总结
    ctx.beginPath()//新建一条路径,生成之后,图形绘制命令被指向到路径上生成路径。ctx.closePath()//闭合路径之后图形绘制命令又重新指向到上下文中。ctx.stroke()//通过线条来绘制图形轮廓。ctx.fill()//通过填充路径的内容区域生成实心的图形。 绘制矩形 ctx.save() ctx.......
  • /run/initramfs/rdsosreport.txt 报错
     vmwarecentos7虚拟机出现Generating/run/initramfs/rdsosreport.txt问题? 解决步骤1.使用命令ls/dev/mapper列出/dev/mapper目录下的文件,查看后缀为“-root”的文件ls/dev/mapper#接着大概率会出现这三个文件centos-rootcentos-swapcontrol2.使用命令xfs_repai......
  • 为啥赋值他就报错JSONDecodeError?
    大家好,我是皮皮。一、前言前几天在Python最强王者交流群【哎呦喂 是豆子~】问了一个Python解析的问题。问题如下:大佬们谁有时间帮忙看下这个情况 好奇怪哦 为啥赋值他就报错JSONDecodeError:Expectingvalue:line1column1(char0)load是load文件,loads才是数据。......
  • webstorm报错:ESLint: TypeError: this.libOptions.parse is not a function
     解决办法:把 {**/*,*}.{js,ts,jsx,tsx,html,vue}换成{**/*,*}.(js,ts,jsx,tsx,html,vue) 原文:https://stackoverflow.com/questions/73509984/eslint-typeerror-this-liboptions-parse-is-not-a-functionMyfriends,ifyouareusing Webstorm orany Jetbrains p......
  • 1.24总结
    packagecom.mediator;importcom.mediator.Annotations.CommandHandler;importcom.mediator.Annotations.EnableCommandHandler;importcom.mediator.Annotations.PipeLine;importcom.mediator.Mediator.IMediator;importcom.mediator.Mediator.impl.Mediator;impor......
  • petalinux 报错总结
    Failedtomenuconfigprojectcomponent....解决办法此处是由于Terminal(终端)的界面太窄导致的,把Terminal(终端)界面拉宽即可;重新执行命令【petalinux-config--get-hw-description=*.xsa“path”】后,可以看到配置界面弹出来了,且没有了刚刚的错误。do_rootfs:Thepostinstall......
  • ChatGPT无法登录报错something went wrong. please make sure your device's date and
    这两天Android在登陆ChatGPT的时候,出现错误:somethingwentwrong.pleasemakesureyourdevice'sdateandtimearesetproperly如下图:这个问题就出现的非常蹊跷,于是我在网上搜索了一圈,很多的教程都指向节点网络问题,但是我的Hostease网络确定没有问题,因此这个问题就快无解了,正......
  • 每日总结2024年1月24日
    比较适合用来做图表的网站首页-MadeAPiealova是一个轻量级的请求策略库,支持开发者使用声明式实现例如请求共享、分页请求、表单提交、断点续传等各种较复杂的请求,让开发者使用非常少量的代码就可以实现高可用性和高流畅性的请求功能,这意味着,你再也不需要自己绞尽脑汁编写请......
  • mellanox ib card芯片型号是ConnectX-6操作系统centos 7.6升级完内核5.19 .4后,安装驱
    在升级内核后,有时候需要重新编译和安装驱动以适配新的内核版本。以下是一些可能的解决步骤:确保内核头文件已安装:在升级内核后,可能需要安装新内核版本的头文件。使用以下命令安装:bashCopycodesudoyuminstallkernel-devel-$(uname-r)kernel-headers-$(uname-r)确保......
  • Fedora使用dnf安装package的时候遇到报错:Curl error (37): Couldn't read a file:// f
    问题描述在使用dnf包管理器下载软件包的过程中,多次遇到了以下错误Curlerror(37):Couldn'treadafile://fileforfile:///etc/pki/rpm-gpg/RPM-GPG-KEY-fedora-x86_64[Couldn'topenfile/etc/pki/rpm-gpg/RPM-GPG-KEY-fedora-x86_64]系统是新配置的Fedora39WorkSt......