开发者社区> 问答> 正文

在使用canal同步时出现 #alibaba_rds_row_id#__ not matched 异

数据库 :阿里云rds 问题描述: 在使用canal同步时出现 #alibaba_rds_row_id#__ not matched 异常, 我们的表在创建时设置了主键,并且大部分的数据都可以成功的从目标库同步到目的库,偶发的会出现上诉问题(两百万条,有是大约350条出现上诉异常,而造成从库数据丢失),不知道如何处理.

建表语句:

提问13.png

异常提示:

2022-10-19 15:21:25.322 [pool-11-thread-1] ERROR c.a.otter.canal.adapter.launcher.loader.AdapterProcessor - java.lang.RuntimeException: java.util.concurrent.ExecutionException: java.lang.RuntimeException: java.lang.RuntimeException: Target column: #alibaba_rds_row_id# not matched java.lang.RuntimeException: java.lang.RuntimeException: java.util.concurrent.ExecutionException: java.lang.RuntimeException: java.lang.RuntimeException: Target column: #alibaba_rds_row_id# not matched at com.alibaba.otter.canal.client.adapter.rdb.RdbAdapter.sync(RdbAdapter.java:171) ~[na:na] at com.alibaba.otter.canal.adapter.launcher.loader.AdapterProcessor.batchSync(AdapterProcessor.java:139) ~[client-adapter.launcher-1.1.5.jar:na] at com.alibaba.otter.canal.adapter.launcher.loader.AdapterProcessor.lambda$null$1(AdapterProcessor.java:97) ~[client-adapter.launcher-1.1.5.jar:na] at java.util.concurrent.CopyOnWriteArrayList.forEach(CopyOnWriteArrayList.java:895) ~[na:1.8.0_291] at com.alibaba.otter.canal.adapter.launcher.loader.AdapterProcessor.lambda$null$2(AdapterProcessor.java:94) ~[client-adapter.launcher-1.1.5.jar:na] at java.util.concurrent.FutureTask.run(FutureTask.java:266) ~[na:1.8.0_291] at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) ~[na:1.8.0_291] at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) ~[na:1.8.0_291] at java.lang.Thread.run(Thread.java:748) ~[na:1.8.0_291] Caused by: java.lang.RuntimeException: java.util.concurrent.ExecutionException: java.lang.RuntimeException: java.lang.RuntimeException: Target column: #alibaba_rds_row_id# not matched

提问14.jpeg

通过源码发现,在批量同步时,如果出现异常就会发生回滚,达到重试的阈值后就会丢弃数据.通过排查发现有一张表没有创建主键,因而发生其他正常表数据也会丢失的问题

提问15.jpeg

原提问者GitHub用户xiaoyaoll

展开
收起
白夜行fighting 2023-04-25 20:24:48 203 0
1 条回答
写回答
取消 提交回答
    1. #alibaba_rds_row_id# ,这个是rds的隐藏主键,肯定不是你反馈的表结构

    2. sync同步失败,有超时次数定义,可以设置为无穷大,也就是意味着一直重试

    原回答者GitHub用户agapple

    2023-04-26 17:17:08
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
搭建电商项目架构连接MySQL 立即下载
搭建4层电商项目架构,实战连接MySQL 立即下载
PolarDB MySQL引擎重磅功能及产品能力盛大发布 立即下载

相关镜像