错误处理任务设置
可以使用以下设置来设置复制任务的错误处理行为。有关如何使用任务配置文件来设置任务设置的信息,请参阅任务设置示例。
-
DataErrorPolicy– 决定在出现与记录级别的数据处理相关的错误时,Amazon DMS 执行的操作。数据处理错误的一些示例包括转换错误、变换中的错误和不正确的数据。默认值为LOG_ERROR。-
IGNORE_RECORD– 任务继续,并且将忽略该记录的数据。DataErrorEscalationCount属性的错误计数器将递增。因此,如果您为表设置错误数限制,则此错误将计入限制。 -
LOG_ERROR– 任务继续,并且错误将写入任务日志。 -
SUSPEND_TABLE– 任务继续,但带错误记录的表中的数据将移至错误状态,并且不会复制数据。 -
STOP_TASK– 任务停止,并且需要手动干预。
-
-
DataTruncationErrorPolicy– 决定在数据被截断时,Amazon DMS 执行的操作。默认值为LOG_ERROR。-
IGNORE_RECORD– 任务继续,并且将忽略该记录的数据。DataErrorEscalationCount属性的错误计数器将递增。因此,如果您为表设置错误数限制,则此错误将计入限制。 -
LOG_ERROR– 任务继续,并且错误将写入任务日志。 -
SUSPEND_TABLE– 任务继续,但带错误记录的表中的数据将移至错误状态,并且不会复制数据。 -
STOP_TASK– 任务停止,并且需要手动干预。
-
-
DataErrorEscalationPolicy– 决定在达到最大错误数(在DataErrorEscalationCount参数中设置)时,Amazon DMS 执行的操作。默认值为SUSPEND_TABLE。-
SUSPEND_TABLE– 任务继续,但带错误记录的表中的数据将移至错误状态,并且不会复制数据。 -
STOP_TASK– 任务停止,并且需要手动干预。
-
-
DataErrorEscalationCount– 设置特定记录的数据可出现的错误的最大数目。当达到此数目时,将根据DataErrorEscalationPolicy中设置的策略来处理包含错误记录的表的数据。默认值是 0。 -
EventErrorPolicy– 确定 Amazon DMS 在发送与任务相关的事件时发生错误时采取的操作。可能的值包括-
IGNORE– 任务继续,与该事件关联的所有数据都将被忽略。 -
STOP_TASK– 任务停止,并且需要手动干预。
-
-
TableErrorPolicy– 决定在处理特定表的数据或元数据时出错的情况下,Amazon DMS 执行的操作。此错误仅适用于常规表数据,而不是与特定记录相关的错误。默认值为SUSPEND_TABLE。-
SUSPEND_TABLE– 任务继续,但带错误记录的表中的数据将移至错误状态,并且不会复制数据。 -
STOP_TASK– 任务停止,并且需要手动干预。
-
-
TableErrorEscalationPolicy– 决定在达到最大错误数(使用TableErrorEscalationCount参数设置)时,Amazon DMS 执行的操作。默认用户设置为STOP_TASK,其中任务将停止,并且需要手动干预。 -
TableErrorEscalationCount– 特定表的常规数据或元数据可出现的错误的最大数目。当达到此数目时,将根据TableErrorEscalationPolicy中设置的策略处理表的数据。默认值是 0。 -
RecoverableErrorCount– 在出现环境错误时,可尝试重新启动任务的最大次数。在系统尝试重新启动任务指定次数时,任务将停止,并且需要手动干预。默认值是 -1。当您将此值设置为 -1 时,DMS 尝试的重试次数会根据返回的错误类型而有所不同,如下所示:
运行状态,可恢复的错误:如果出现可恢复的错误,例如连接中断或目标应用失败,DMS 将重试任务九次。
启动状态,可恢复的错误:DMS 重试任务六次。
运行状态,DMS 处理的致命错误:DMS 重试任务六次。
运行状态,DMS 处理的致命错误:DMS 不重试任务。
-
除上述之外:Amazon DMS 会无限期重试任务。
将此值设置为 0 将从不尝试重新启动任务。
建议您设置
RecoverableErrorCount和RecoverableErrorInterval值时应确保在足够的时间间隔内有足够的重试次数,以便 DMS 任务能够正常恢复。如果发生致命错误,则在大多数情况下,DMS 会停止尝试重新启动。 -
RecoverableErrorInterval– 在每次重新启动任务的尝试之间,Amazon DMS 等待的秒数。默认值是 5。 -
RecoverableErrorThrottling– 启用后,尝试重启任务的间隔将根据RecoverableErrorInterval的值连续增加。例如,如果RecoverableErrorInterval设置为 5 秒,则下一次重试将在 10 秒后进行,然后是 20 秒,然后是 40 秒,依此类推。默认值为true。 -
RecoverableErrorThrottlingMax– 在启用RecoverableErrorThrottling的情况下,Amazon DMS 在重新启动任务的尝试之间等待的秒数。默认值是 1800。 -
RecoverableErrorStopRetryAfterThrottlingMax– 默认值设为true,并且在达到RecoverableErrorStopRetryAfterThrottlingMax决定的恢复尝试次数之间,Amazon DMS 会在等待秒数达到上限之后停止恢复任务。如果设置为false,DMS 在达到 Amazon DMS 每次恢复尝试之间等待的最大秒数后,仍会继续恢复任务,按照RecoverableErrorStopRetryAfterThrottlingMax进行,直到达到RecoverableErrorCount为止。 -
ApplyErrorDeletePolicy– 决定在与 DELETE 操作发生冲突时,Amazon DMS 执行的操作。默认值为IGNORE_RECORD。可能的值包括:-
IGNORE_RECORD– 任务继续,并且将忽略该记录的数据。ApplyErrorEscalationCount属性的错误计数器将递增。因此,如果您为表设置错误数限制,则此错误将计入限制。 -
LOG_ERROR– 任务继续,并且错误将写入任务日志。 -
SUSPEND_TABLE– 任务继续,但带错误记录的表中的数据将移至错误状态,并且不会复制数据。 -
STOP_TASK– 任务停止,并且需要手动干预。
-
-
ApplyErrorInsertPolicy– 决定在与 INSERT 操作发生冲突时,Amazon DMS 执行的操作。默认值为LOG_ERROR。可能的值包括:-
IGNORE_RECORD– 任务继续,并且将忽略该记录的数据。ApplyErrorEscalationCount属性的错误计数器将递增。因此,如果您为表设置错误数限制,则此错误将计入限制。 -
LOG_ERROR– 任务继续,并且错误将写入任务日志。 -
SUSPEND_TABLE– 任务继续,但带错误记录的表中的数据将移至错误状态,并且不会复制数据。 -
STOP_TASK– 任务停止,并且需要手动干预。 -
INSERT_RECORD– 如果存在带与插入的源记录相同的主键的现有目标记录,则更新该目标记录。注意
-
在“事务应用”模式下:在此过程中,系统首先尝试插入记录。如果由于主键冲突而导致插入失败,则会删除现有记录,然后插入新记录。
-
在“批量应用”模式下:在插入完整的新记录集之前,该过程会移除目标批次中的所有现有记录,从而确保干净地替换数据。
-
-
-
ApplyErrorUpdatePolicy– 决定在与 UPDATE 操作发生缺少数据的冲突时,Amazon DMS 执行的操作。默认值为LOG_ERROR。可能的值包括:-
IGNORE_RECORD– 任务继续,并且将忽略该记录的数据。ApplyErrorEscalationCount属性的错误计数器将递增。因此,如果您为表设置错误数限制,则此错误将计入限制。 -
LOG_ERROR– 任务继续,并且错误将写入任务日志。 -
SUSPEND_TABLE– 任务继续,但带错误记录的表中的数据将移至错误状态,并且不会复制数据。 -
STOP_TASK– 任务停止,并且需要手动干预。 -
UPDATE_RECORD– 如果目标记录缺失,则缺失的目标记录将插入目标表。Amazon DMS 完全禁用了对此任务的 LOB 列支持。选择该选项要求在 Oracle 作为源数据库时为所有源表列启用完整补充日志记录。注意
-
在“事务应用”模式下:在此过程中,系统首先尝试更新记录。如果由于目标上缺少记录而导致更新失败,则会对失败的记录执行删除操作,然后插入新记录。此过程需要 Oracle 源数据库的完整补充日志记录,而 DMS 禁用了对此任务的 LOB 列支持。
-
在“批量应用”模式下:在插入完整的新记录集之前,该过程会移除目标批次中的所有现有记录,从而确保干净地替换数据。
-
-
-
ApplyErrorEscalationPolicy– 决定在达到最大错误数(使用ApplyErrorEscalationCount参数设置)时,Amazon DMS 执行的操作。默认值为 LOG_ERROR:-
LOG_ERROR– 任务继续,并且错误将写入任务日志。 -
SUSPEND_TABLE– 任务继续,但带错误记录的表中的数据将移至错误状态,并且不会复制数据。 -
STOP_TASK– 任务停止,并且需要手动干预。
-
-
ApplyErrorEscalationCount– 该选项设置在更改处理操作期间,特定表可发生的 APPLY 冲突的最大次数。达到此数目时,将根据ApplyErrorEscalationPolicy参数中设置的策略处理表数据。默认值是 0。 -
ApplyErrorFailOnTruncationDdl– 如果将该选项设置为true,则会导致在 CDC 期间对任何跟踪的表执行截断时任务失败。默认值为false。此方式不适用于 PostgreSQL 11.x 或以下版本,以及不复制 DDL 表截断的任何其他源端点。
-
FailOnNoTablesCaptured– 如果将该选项设置为true,则会导致在任务启动时为任务定义的表映射找不到表时任务失败。默认值为true。 -
FailOnTransactionConsistencyBreached– 该选项适用于将 Oracle 作为 CDC 源的任务。默认值为 false。如果将该选项设置为true,则会导致当事务的打开时间超出指定超时并可能删除时任务失败。在使用 Oracle 启动 CDC 任务时,Amazon DMS 将等待有限的时间以关闭最早打开的事务,然后再启动 CDC。如果在达到超时之前未关闭最早打开的事务,那么大多数情况下 Amazon DMS 会启动 CDC 而忽略该事务。如果将该选项设置为
true,则任务将失败。 -
FullLoadIgnoreConflicts– 如果将该选项设置为true,则 Amazon DMS 在应用缓存的事件时将忽略“zero rows affected”(零行受到影响)和“duplicates”(重复项)错误。如果设置为false,则 Amazon DMS 将报告所有错误,而不忽略这些错误。默认值为true。 DataMaskingErrorPolicy– 确定由于数据类型不兼容或任何其他原因导致数据掩蔽失败时 Amazon DMS 采取的操作。可用选项如下:STOP_TASK(默认)– 任务停止,并且需要手动干预。IGNORE_RECORD– 任务继续,并且将忽略该记录的数据。LOG_ERROR– 任务继续,并且错误将写入任务日志。未掩蔽的数据将加载到目标表中。SUSPEND_TABLE– 任务继续,但带错误记录的表中的数据将移至错误状态,并且不会复制数据。
请注意,STL_LOAD_ERRORS 中报告了 Redshift 作为目标的表加载错误。有关更多信息,请参阅《Amazon Redshift 数据库开发人员指南》中的 STL_LOAD_ERRORS。