基于Canal监听Mysql的binlog变更同步到elasticsearch失败的问题排查
·
具体的配置过程参考以下文章使用canal client-adapter完成mysql到es数据同步教程(包括全量和增量)_canal-adapter 创建es索引同步全量数据的原理-CSDN博客
如果你按照上述配置,并确认无误,之后出现:
-
全量同步可以成功,但是增量同步失败
-
当数据库表记录发生变更,canal-adapter监听到binlog并在日志中打印出来,但是没有同步至es
那么可以看看我这篇文章遇到的问题,以及发现问题的过程,先说结论:数据库库名不要存在大写英文字母!!!






注意看!!!上面这张图最上面的红框dml信息:database :'nfturbo',
再看dbTableEsSyncConfig这个map集合,它的value存放的是你配置的yml文件,而key是采用配置的destination+数据库库名+表名,而这里这个数据库名就是你在adapter的配置文件中配置的mysql url中写的数据库名,我写的时候就是localhost:3306/NFTurbo。
canal在启动时加载配置文件到dbTableEsSyncConfig时获取数据库库名的方式是直接lastindexof('/')截取库名过来,所以你写什么样就是什么样。
而adapter监听到的binlog是数据库名全部转为小写后的字符串,这样就会在下面这里判断的时候configMap为null,就跳过了增量同步的过程!

更多推荐



所有评论(0)