- 文档首页
数据库传输服务
常见问题
常见通用问题
遇到数据冲突和主键冲突时怎么办?
遇到数据冲突和主键冲突时怎么办?
本文主要适用于 DTS(数据传输服务)在数据迁移或同步任务中,源端与目标端发生数据冲突的排查与处理场景。常见的冲突表现包括:目标端已存在相同主键的数据、双向同步架构下两端同时写入同一数据,或因任务配置为“冲突报错”导致主键冲突时任务暂停等。
遇到出现数据冲突,应该如何处理?
遇到主键冲突报错,应该如何处理?
建议您优先根据业务对数据一致性和任务连续性的要求来选择策略。
在多数情况下,推荐使用冲突覆盖,即让源端数据覆盖目标端数据。如果选择冲突忽略,两端会各自保留数据,容易导致数据不一致,因此不推荐在生产场景使用。如果选择冲突报错,任务遇到冲突会暂停,需要人工处理,更适合测试环境或需要严格人工确认的场景。具体场景如下表所示:
- 在多数迁移或同步场景中,源端通常被视为业务数据的主来源。当发生冲突时,让源端数据覆盖目标端数据通常更符合业务预期,也能保证任务继续推进。
说明
在双向同步场景中需要谨慎使用。例如 A 和 B 双向同步时,如果 A 在 t1 时刻写入数据,B 在 t2 时刻写入数据,且 t1 晚于 t2,那么在 A 的反向链路中,B 的数据同步到 A 时,可能会覆盖 A 在 t1 之后写入的数据。因此,双向同步场景下应结合写入时序和业务规则综合评估。
冲突忽略会在发生冲突时直接跳过处理,让两端各自保留数据。如果业务要求迁移或同步后两端数据保持严格一致,则不建议使用该策略。仅在业务明确允许两端数据存在差异,且已充分评估差异影响的情况下,才可考虑使用。
该策略适合需要人工确认冲突数据、并希望在冲突发生时暂停任务的场景。选择该策略后,DTS 会暂停任务并报错,您需手动修改冲突数据,并在业务校验通过后,再手动重启任务。
冲突报错可以帮助发现并阻断不一致数据继续写入,但也会导致迁移或同步任务暂停。如果在业务高峰或重要链路中频繁发生冲突,后续数据可能无法继续传输,影响任务连续性。因此,除非业务明确要求人工处理每一次冲突,否则不建议在生产场景中优先选择该策略,建议优先评估冲突覆盖策略是否满足业务预期。
说明
当前冲突报错策略属于加白功能,如需使用,请提交工单申请。
如果选择了冲突报错策略,任务执行过程中遇到主键冲突时,DTS 会暂停任务并报错。此时需要手动修改冲突数据,完成业务校验后,再手动重启任务。主键冲突通常表示目标端已存在与源端相同主键的数据,或同步链路中出现了会写入同一主键的数据变更。处理时需先确认哪一端的数据是最终应保留的数据,再根据业务结果进行修改。
最近更新时间:2026.08.12 17:56:34