我有一個已停止且未重試的 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:任務 'K7YJOFK7GYXIK44C2KLGFNG7ZONLZGPWPD5RWHA' 遇到了一個嚴重錯誤」
當 AWS DMS 遇到嚴重錯誤時,會嘗試重新啟動六次。如果您的任務不再重試,則其可能已經完成了這些嘗試。
可加以復原的錯誤
AWS DMS 會將所有環境錯誤視為可加以復原的錯誤。因此,如果任務或複寫執行個體遇到環境錯誤,則任務會中斷但會自行復原,接著則會重試。
可加以復原的錯誤的範例包括:
- AWS DMS 複寫執行個體與來源/目標資料庫的連線中斷。
- 由於維護的緣故,複寫執行個體已重新啟動。
在工作日誌中,您會看到類似下列的訊息:
「從子任務 0 收到的上一個錯誤任務錯誤通知,執行緒 0 [reptask/replicationtask.c:2673] [1022502] 停止原因 RECOVERABLE_ERROR 錯誤等級 RECOVERABLE」
根據預設,具有可加以復原錯誤的任務會無限期地嘗試重試。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 Database Migration Service 中的遷移任務疑難排解