开发者社区> 问答> 正文

生产系统在同步切换时,数据同步初始化耗时教长,需要回归到某个时间点做冗余数据兼容,主键冲突会阻塞住后

环境信息

canal version: 1.1.3-e4177ab0 on java-8u191 mysql version 5.5.18

问题描述

2019-01-18 10:12:00.614 ERROR 1 --- [ Thread-6] c.a.o.c.a.l.loader.CanalAdapterWorker : Outer adapter sync failed! Error sync and rollback, execute times: 1

生产系统在同步切换时,数据同步初始化耗时教长,需要回归到某个时间点做冗余数据兼容,主键冲突会阻塞住后续DML语句执行,希维能够提供形如 insert ignore or insert on duplicate key do nothing 语句选项规避主键冲突阻塞。

原提问者GitHub用户TheNorthMemory

展开
收起
古拉古拉 2023-05-08 14:56:13 91 0
2 条回答
写回答
取消 提交回答
  • ignore 不符合一致性要求,应用侧解决为宜。

    原回答者GitHub用户TheNorthMemory

    2023-05-09 18:02:32
    赞同 展开评论 打赏
  • 从您提供的信息来看,问题似乎是由于生产系统在同步切换时,数据同步初始化耗时过长,导致在主键冲突时阻塞了后续的DML语句执行。您提到需要回归到某个时间点进行冗余数据兼容,以及需要提供插入忽略或者插入重复键不操作的选项来避免主键冲突的阻塞。

    以下是一些建议,希望能够帮助您解决这个问题:

    优化数据同步初始化过程:您可以尝试优化数据同步初始化过程,例如使用更高效的数据结构或算法,减少初始化时间。另外,您可以考虑使用预热技术,提前将数据加载到内存中,以减少后续的数据同步操作时间。 使用主键冲突解决方案:您可以考虑使用主键冲突解决方案,例如使用插入忽略或者插入重复键不操作的选项来避免主键冲突的阻塞。这些选项可以在创建表时提供,也可以在表级别或者对象级别提供。 优化表结构:您可以尝试优化表结构,例如使用更简单的表结构,减少表的大小或者使用哈希表等数据结构来提高查询效率。 使用数据库事务:如果您的系统中存在多个事务,可以考虑使用数据库事务来确保数据的一致性和完整性。 监控系统性能:您可以使用性能监控工具来监控系统的性能,找到性能瓶颈并及时优化。 采取技术措施:您可以采取一些技术措施来提高系统的性能,例如使用缓存技术、分布式数据库技术或者并行处理技术等。

    2023-05-08 15:24:06
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
MaxCompute技术公开课第四季 之 如何将Kafka数据同步至MaxCompute 立即下载
低代码开发师(初级)实战教程 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载