数据库 :阿里云rds 问题描述: 在使用canal同步时出现 #alibaba_rds_row_id#__ not matched 异常, 我们的表在创建时设置了主键,并且大部分的数据都可以成功的从目标库同步到目的库,偶发的会出现上诉问题(两百万条,有是大约350条出现上诉异常,而造成从库数据丢失),不知道如何处理.
建表语句:
异常提示:
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
通过源码发现,在批量同步时,如果出现异常就会发生回滚,达到重试的阈值后就会丢弃数据.通过排查发现有一张表没有创建主键,因而发生其他正常表数据也会丢失的问题
原提问者GitHub用户xiaoyaoll
#alibaba_rds_row_id# ,这个是rds的隐藏主键,肯定不是你反馈的表结构
sync同步失败,有超时次数定义,可以设置为无穷大,也就是意味着一直重试
原回答者GitHub用户agapple
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。