具体的配置过程参考以下文章使用canal client-adapter完成mysql到es数据同步教程(包括全量和增量)_canal-adapter 创建es索引同步全量数据的原理-CSDN博客

如果你按照上述配置,并确认无误,之后出现:

  1. 全量同步可以成功,但是增量同步失败

  2. 当数据库表记录发生变更,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,就跳过了增量同步的过程!

Logo

中国智能体开发者社区,聚焦智能体与大模型开发,提供前沿资讯、实用工具链、开源项目及行业案例。通过技术沙龙、开发者大赛等活动,促进经验交流与协作,助力开发者快速构建创新智能应用。

更多推荐