我们正在使用DMS从sql服务器(2016)到RDS postgres数据库执行全负载+ CDC。我最近了解了通过cli设置错误处理参数的知识,并创建了一个具有一些特定设置的任务。目标表具有来自先前测试负载的一些数据,并且我的TargetTablePrepMode值设置为“不执行任何操作”。因此,当我开始执行任务时,由于违反主键约束(无法插入重复的键),该任务失败了,这是可以理解的,因为目标表中已有数据。但是问题出在任务设置中,我专门设置了以下值-"ApplyErrorInsertPolicy":"INSERT_RECORD"
。
根据AWS文档
ApplyErrorInsertPolicy –确定与INSERT操作发生冲突时AWS DMS采取什么措施。
- INSERT_RECORD –如果存在与插入的源记录具有相同主键的现有目标记录,则更新目标记录。
所以我的期望是,它不会更新过程而导致违反主键约束,而是会更新目标记录。 但是显然,此任务不会发生这种情况。
我理解不正确吗?
编辑: 在任务设置中添加错误处理值-
"ErrorBehavior":{
"DataErrorPolicy":"LOG_ERROR",
"DataTruncationErrorPolicy":"LOG_ERROR",
"DataErrorEscalationPolicy":"STOP_TASK",
"DataErrorEscalationCount":0,
"TableErrorPolicy":"STOP_TASK",
"TableErrorEscalationPolicy":"STOP_TASK",
"TableErrorEscalationCount":0,
"RecoverableErrorCount":2,
"RecoverableErrorInterval":5,
"RecoverableErrorThrottling":true,
"RecoverableErrorThrottlingMax":1800,
"ApplyErrorDeletePolicy":"LOG_ERROR",
"ApplyErrorInsertPolicy":"INSERT_RECORD",
"ApplyErrorUpdatePolicy":"UPDATE_RECORD",
"ApplyErrorEscalationPolicy":"STOP_TASK",
"ApplyErrorEscalationCount":25,
"FullLoadIgnoreConflicts":false
},