为什么我的 AWS DMS 任务没有重试?
我有一个 AWS Database Migration Service(AWS DMS)任务已停止且未重试。如何恢复我的 AWS DMS 任务的操作?
解决方法
AWS DMS 是一项托管服务,旨在实现自我修复。这意味着,当问题发生时,AWS DMS 会尝试修复问题,然后恢复运行,而无需您采取任何操作。但是,在某些情况下,迁移会停止且不会重试。
首先,很重要的一点是:了解使用 AWS DMS 时可能遇到的两种错误:
- 致命错误
- 可恢复的错误
致命错误
如果 AWS DMS 遇到错误,无法继续进行迁移,则任务将停止并进入 FAILED 状态。该错误被称为致命错误。一些示例包括:
- 源端点未配置,而这是迁移的先决条件。
- AWS DMS 复制实例不会从源数据库中获取源对象。
在任务日志中,您会看到类似于以下内容的消息:
"2022-05-28T16:07:35 [TASK_MANAGER ]E: Task 'K7YJOFK7GYXIK44C2KLGFNG7ZONLZGPWPD5RWHA' encountered a fatal error"(任务‘K7YJOFK7GYXIK44C2KLGFNG7ZONLZGPWPD5RWHA’遇到了致命错误)
当 AWS DMS 遇到致命错误时,它会尝试重启六次。如果您的任务不再重试,那么它可能已经执行完六次尝试。
可恢复的错误
AWS DMS 将所有环境错误视为可恢复的错误。因此,如果任务或复制实例遇到环境错误,则任务会中断,但会自行恢复,然后重试。
可恢复错误的示例包括:
- AWS DMS 复制实例与源/目标数据库的连接中断。
- 出于维护原因,复制实例重启。
在任务日志中,您会看到类似于以下内容的消息:
"Last Error Task error notification received from subtask 0, thread 0 [reptask/replicationtask.c:2673] [1022502] Stop Reason RECOVERABLE_ERROR Error Level RECOVERABLE"(收到来自子任务 0 的最后错误任务提示,线程 0 [reptask/replicationtask.c:2673] [1022502] 停止原因 RECOVERABLE_ERROR 错误级别可恢复)
默认情况下,具有可恢复错误的任务会无限期地尝试重试。RecoverableErrorCount 设置可对此行为进行控制。此参数设置 AWS DMS 在遇到环境错误时尝试重启任务的次数上限。在系统尝试重启任务达指定次数后,任务将停止,需要手动干预。默认值为 -1,指示 AWS DMS 无限期地重启任务。
如果可恢复的错误导致任务停止且不再重试,则应进行以下检查:
- 是否已将 RecoverableErrorCount 参数设置为自定义值。
- 复制实例本身是否已关闭。
检查其他非默认值的设置是否阻止重试
如果已将这些设置设置为非默认值,则系统可能会阻止 AWS DMS 任务重试:
"ErrorBehavior": { "FailOnNoTablesCaptured": false, "ApplyErrorUpdatePolicy": "LOG_ERROR", --- can be set to STOP_TASK "FailOnTransactionConsistencyBreached": false, "RecoverableErrorThrottlingMax": 1800, "DataErrorEscalationPolicy": "SUSPEND_TABLE", --- can be set to STOP_TASK "ApplyErrorEscalationCount": 0, "RecoverableErrorStopRetryAfterThrottlingMax": false, "RecoverableErrorThrottling": true, "ApplyErrorFailOnTruncationDdl": false, "DataTruncationErrorPolicy": "LOG_ERROR", --- can be set to STOP_TASK "ApplyErrorInsertPolicy": "LOG_ERROR", --- can be set to STOP_TASK "EventErrorPolicy": "IGNORE", "ApplyErrorEscalationPolicy": "LOG_ERROR", --- can be set to STOP_TASK "RecoverableErrorCount": -1, "DataErrorEscalationCount": 0, "TableErrorEscalationPolicy": "STOP_TASK", "RecoverableErrorInterval": 5, "ApplyErrorDeletePolicy": "IGNORE_RECORD", --- can be set to STOP_TASK "TableErrorEscalationCount": 0, "FullLoadIgnoreConflicts": true, "DataErrorPolicy": "LOG_ERROR", "TableErrorPolicy": "SUSPEND_TABLE" },
相关信息
相关内容
- AWS 官方已更新 2 年前
- AWS 官方已更新 2 年前
- AWS 官方已更新 7 个月前
- AWS 官方已更新 7 个月前