canal 增量抽取 mysql 数据到 elasticsearch 遇到的坑

第一个是在 bin 目录下启动 sh 脚本,但是没有反应,排查了半天是因为当前账号没有权限,重新搞了一个账号切换就ok了,

第二个比较坑一点,我这里用的是 canal 1.1.3 的版本,es 用的是 7.2 ,这样搞出来导致数据写入不成功,在源码测试了半天也没有结果,显示 canal 已经把数据传递出去了,而且 _mapping 设计的没有问题,看了半天发现 es 报错

ERROR c.a.o.canal.adapter.launcher.loader.CanalAdapterWorker - NoNodeAvailableException[None of the configured nodes are 					available: [{#transport#-1}{lTIHs6ZsTe-PqHs9CToQYQ}{192.168.254.131}{192.168.254.131:9300}]] 无法连接ES的错误。

在网上找到了踩到相同坑的大佬的博客,说目前还不支持7版本的增量同步,所以换成 6.x 就差不多了。

第三个坑是数据库版本要契合,canal 包中加载的是 5.x,但是我们用的是 8.x,专门又把 canal 重新加载了一遍。

还有就是数据库表名称一定要和配置文件一致,否则会读取不到。

第四个

{"error":{"root_cause":[{"type":"verification_exception","reason":"Found 1 problem(s)\nline 1:48: 	[questionYear = 2020] cannot operate on first argument field of data type [text]: No keyword/multi-field defined exact matches for [questionYear]; define one or use MATCH/QUERY instead"}],"type":"verification_exception","reason":"Found 1 problem(s)\nline 1:48: [questionYear = 2020] cannot operate on first argument field of data type [text]: No keyword/multi-field defined exact matches for [questionYear]; define one or use MATCH/QUERY instead"},"status":400}

字段问题,创建新索引,更改相关字段类型,然后创建别名,重新引用

第五个

java.lang.RuntimeException: ES sync commit errorClusterBlockException[index

可能是服务器空间满了, es 自动开启了只读模式,要关闭只读模式

curl -XPUT -H "Content-Type: application/json" http://127.0.0.1:9201/_all/_settings -d '{"index.blocks.read_only_allow_delete": null}'
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值