我想解决我的 AWS Database Migration Service (AWS DMS) 任务停止并且不重试的问题。
解决方法
AWS DMS 是一项专为自我修复而设计的托管服务。出现问题时,AWS DMS 会尝试修复问题,然后恢复运行。如果迁移停止且不重试,则可能会出现致命或可恢复的错误。
致命错误
如果 AWS DMS 遇到停止 AWS DMS 迁移的错误,则任务将停止并进入 FAILED(失败)状态。您可能会因以下问题之一收到致命错误:
- 您尚未配置源端点。源端点是迁移的先决条件。
- AWS DMS 复制实例不从源数据库提取源对象。
在任务日志中,您可能会收到类似于以下内容的错误消息:
“2022-05-28T16:07:35 [TASK_MANAGER ]E: 任务‘K7YJOFK7GYXIK44C2KLGFNG7ZONLZGPWPD5RWHA’遇到致命错误”
当 AWS DMS 遇到致命错误时,AWS DMS 会尝试重启 6 次。如果您的任务没有重试,则 AWS DMS 完成了 6 次重启。
可恢复的错误
对于 AWS DMS,所有环境错误都是可恢复的错误。如果任务或复制实例遇到环境错误,则任务会中断。任务恢复,然后重试。以下是可恢复错误的示例:
- AWS DMS 复制实例与源或目标数据库的连接中断。
- 复制实例已重启以进行维护。
在任务日志中,您可能会收到类似于以下内容的错误消息:
“从子任务 0、线程 0 [reptask/replicationtask.c:2673] [1022502] 收到的上次错误任务错误通知,停止原因 RECOVERABLE_ERROR,错误级别 RECOVERABLE”
默认情况下,出现可恢复错误的任务会尝试重启。RecoverableErrorCount 参数用于设置在 AWS DMS 遇到环境错误时尝试重启任务的最大次数。在系统尝试按指定次数重启任务后,任务将停止,需要手动干预。有关详细信息,请参阅错误处理任务设置。
如果可恢复的错误导致任务停止且该任务不再重试,请检查 RecoverableErrorCount 是否设置为自定义值。
**注意:**如果 RecoverableErrorCount 设置为值 0,则任务将不会重启。
另外,检查复制实例是否已关闭。
如果以下值设置与默认值不同,则 AWS DMS 任务可能不会重试:
"ErrorBehavior": {
"FailOnNoTablesCaptured": false,
"ApplyErrorUpdatePolicy": "LOG_ERROR",
"FailOnTransactionConsistencyBreached": false,
"RecoverableErrorThrottlingMax": 1800,
"DataErrorEscalationPolicy": "SUSPEND_TABLE",
"ApplyErrorEscalationCount": 0,
"RecoverableErrorStopRetryAfterThrottlingMax": false,
"RecoverableErrorThrottling": true,
"ApplyErrorFailOnTruncationDdl": false,
"DataTruncationErrorPolicy": "LOG_ERROR",
"ApplyErrorInsertPolicy": "LOG_ERROR",
"EventErrorPolicy": "IGNORE",
"ApplyErrorEscalationPolicy": "LOG_ERROR",
"RecoverableErrorCount": -1,
"DataErrorEscalationCount": 0,
"TableErrorEscalationPolicy": "STOP_TASK",
"RecoverableErrorInterval": 5,
"ApplyErrorDeletePolicy": "IGNORE_RECORD",
"TableErrorEscalationCount": 0,
"FullLoadIgnoreConflicts": true,
"DataErrorPolicy": "LOG_ERROR",
"TableErrorPolicy": "SUSPEND_TABLE"
},
**注意:**具有 STOP_TASK 值的设置需要手动干预。
相关信息
对 AWS Database Migration Service 中的迁移任务进行故障排除