alibaba / canal

阿里巴巴 MySQL binlog 增量订阅&消费组件
Apache License 2.0
28.54k stars 7.62k forks source link

mysql8.0数据同步到es8.15.3,能够全量同步,无法触发增量同步 #5320

Open meijingsama opened 1 week ago

meijingsama commented 1 week ago

image docker compose相关配置

image canal-adapter的application.yml配置

image canal-adapter的canal-adapter/conf/es8路径下的user.yml

image canal-server日志中正常记录数据库binlog指针变化

image 执行curl http://127.0.0.1:8081/etl/es8/user.yml -Method POST能够正常触发全量同步

但是数据库记录变化时无法触发canal-adapter增量同步,canal-adapter组件无相关日志打印

meijingsama commented 4 days ago

image 通过查看源代码发现,在执行插入、更新、删除时,每累计一条数据变更,就会向ESBulkRequest中添加一条request image 而提交ESBulkRequest前,会检查request的数量是否大于等于1000,若小于1000则不进行提交,该值为写死不可变更 故推测数据库少量记录变更未进行增量同步,原因是变更数据条数未累计至1000条,不会提交至es,待验证

meijingsama commented 4 days ago

image 不是批量提交的问题,在es数据同步逻辑的外层最后还会进行一次提交,具体问题待修改日志等级后排查