本文为您介绍如何为双向同步实例设置冲突修复策略,以通过冲突检测和修复,最大限度地维护双向同步实例的稳定性。
背景信息
支持的DTS实例
冲突修复策略类型 | DTS实例 |
冲突修复策略类型 | DTS实例 |
全局冲突修复策略 | 除Tair(企业版)实例间的其他双向同步实例。DTS支持的双向同步实例,请参见双向同步。 |
独立冲突修复策略 | MySQL间、PolarDB MySQL间的双向同步实例。 |
支持的冲突检测类型
INSERT导致的唯一性冲突
INSERT要插入的记录在目标实例中出现冲突时,DTS会自动忽略INSERT操作。
UPDATE更新的记录不完全匹配
UPDATE要更新的记录在目标实例中不存在或出现冲突时,DTS都会自动忽略UPDATE操作。
DELETE对应的记录不存在
DELETE要删除的记录在目标实例中不存在时,DTS会自动忽略DELETE操作。
INSERT导致的唯一性冲突
同步INSERT语句时违背了唯一性约束,例如双向同步的两个节点同时或者在极为接近的时间INSERT某个主键值相同的记录,那么同步到对端时,会因为已经存在相同主键值的记录,导致Insert同步失败。
UPDATE更新的记录不完全匹配
UPDATE要更新的记录在同步目标实例中不存在时,DTS会自动转化为INSERT,此时可能会出现唯一键的唯一性冲突。
UPDATE要更新的记录出现主键或唯一键冲突。
DELETE对应的记录不存在
DELETE要删除的记录在同步的目标实例中不存在。出现这种冲突时,不论配置何种冲突修复策略,DTS都会自动忽略DELETE操作。
支持的冲突修复策略
Overwrite
当数据同步遇到冲突时,直接覆盖目标库中的冲突记录。
TaskFailed
当数据同步遇到冲突时,同步任务直接报错并退出(进入失败状态),需要您介入修复任务。
Ignore
当数据同步遇到冲突时,直接跳过当前同步语句,继续往下执行,选择使用目标库中的冲突记录。
TaskFailed
当数据同步遇到冲突时,同步任务直接报错并退出(进入失败状态),需要您介入修复任务。
Ignore
当数据同步遇到冲突时,直接跳过当前同步语句,继续往下执行,选择使用目标库中的冲突记录。
Overwrite
当数据同步遇到冲突时,直接覆盖目标库中的冲突记录。
UseMax
当数据同步遇到冲突时,对当前冲突列的两条记录进行对比,将较大值的记录写入到目标库中。若目标记录不存在或字段类型不满足要求,则系统的处理方法等效于Overwrite。
UseMin
当数据同步遇到冲突时,对当前冲突列的两条记录进行对比,将较小值的记录写入到目标库中。若目标记录不存在或字段类型不满足要求,则系统的处理方法等效于Ignore。
前提条件
已进入双向同步实例的正向或反向任务的对象配置阶段。
双向同步实例的同步拓扑必须选择为双向同步。
注意事项
云数据库MongoDB版间的双向同步,冲突修复策略仅支持Ignore。
仅增量同步支持独立冲突修复策略。
设置了独立冲突修复策略的列,全局冲突修复策略对其不生效。
若双向同步实例未设置独立冲突修复策略,则在修改同步对象时不支持设置独立冲突修复策略。
由于数据同步两端的系统时间可能存在差异、同步存在延时等多种因素,DTS无法完全保证冲突检测机制能够完全防止数据的冲突。在使用双向同步时,您需要在业务层面配合进行相应的改造,保证同一个主键、业务主键或唯一键的记录只在双向同步的某个节点进行更新。
为保障同步数据的一致性,您需要确保同一个主键、业务主键或唯一键的记录只在双向同步的一个节点进行更新。如果同时更新则会按照您在数据同步作业中配置的冲突修复策略进行响应。
如果同步任务暂停或者重启后存在延迟,在延迟期间,设置的冲突修复策略均不生效,默认覆盖目标端数据。
操作步骤
设置全局冲突修复策略
根据实际情况,选择全局冲突修复策略。支持的全局冲突修复策略,请参见支持的冲突修复策略。
云数据库MongoDB版间的双向同步,冲突修复策略仅支持Ignore。
设置独立冲突修复策略
在已选择对象中右键单击待同步的库或表。
开启独立冲突修复策略。
库级别表级别在弹出的对话框的独立冲突修复策略区域,将是否开启独立冲突解决策略选择为是。
选择冲突修复策略。
单击冲突检测列右侧的添加列。
在列名称文本框中,输入需要设置独立冲突修复策略的列名。
若目标列的名称使用了映射功能,则需要填入映射后的列名。
您可以单击冲突检测列右侧的添加列,添加更多需要设置独立冲突修复策略的列。
在弹出的对话框中的列区域,选中独立冲突修复策略。
在冲突检测列列,勾选需要设置独立冲突修复策略的列。
默认已勾选主键和唯一约束的列。
选择冲突修复策略。
若冲突检测列为系统自动勾选的列,则不支持选择UseMax和UseMin。
单击确定。
- 本页导读 (1)
- 背景信息
- 支持的DTS实例
- 支持的冲突检测类型
- 支持的冲突修复策略
- 前提条件
- 注意事项
- 操作步骤
- 设置全局冲突修复策略
- 设置独立冲突修复策略