环境信息
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
从您提供的信息来看,问题似乎是由于生产系统在同步切换时,数据同步初始化耗时过长,导致在主键冲突时阻塞了后续的DML语句执行。您提到需要回归到某个时间点进行冗余数据兼容,以及需要提供插入忽略或者插入重复键不操作的选项来避免主键冲突的阻塞。
以下是一些建议,希望能够帮助您解决这个问题:
优化数据同步初始化过程:您可以尝试优化数据同步初始化过程,例如使用更高效的数据结构或算法,减少初始化时间。另外,您可以考虑使用预热技术,提前将数据加载到内存中,以减少后续的数据同步操作时间。 使用主键冲突解决方案:您可以考虑使用主键冲突解决方案,例如使用插入忽略或者插入重复键不操作的选项来避免主键冲突的阻塞。这些选项可以在创建表时提供,也可以在表级别或者对象级别提供。 优化表结构:您可以尝试优化表结构,例如使用更简单的表结构,减少表的大小或者使用哈希表等数据结构来提高查询效率。 使用数据库事务:如果您的系统中存在多个事务,可以考虑使用数据库事务来确保数据的一致性和完整性。 监控系统性能:您可以使用性能监控工具来监控系统的性能,找到性能瓶颈并及时优化。 采取技术措施:您可以采取一些技术措施来提高系统的性能,例如使用缓存技术、分布式数据库技术或者并行处理技术等。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。