我有一個處於已停止或失敗狀態的 AWS Database Migration Service (AWS DMS) 任務。我該何時恢復或重新啟動 AWS DMS 任務,以繼續複寫?
簡短描述
當您的 AWS DMS 任務處於已停止或失敗狀態時,您有兩個選項可以繼續進行複寫:
- 恢復 - 當您恢復任務時,AWS DMS 將從任務停止或失敗之前的最後一個點繼續複寫。
- 重新啟動 - 當您重新啟動任務時,AWS DMS 將從頭開始複寫,並使用您在建立任務時選擇的資料表準備模式。例如,資料表準備模式包括「在目標端刪除資料表」、「截斷」以及「不進行任何操作」。如需詳細資訊,請參閱完整載入任務設定。
恢復和重新啟動動作的行為,會根據您使用哪種 AWS DMS 遷移方法 (共三種) 而有所不同。這些方法包括「完整載入」、「完整載入和變更資料擷取 (CDC)」,以及「僅限 CDC」遷移。如需詳細資訊,請參閱建立任務。
解決方法
遷移現有資料 (完整載入)
對於完整載入任務,如果您在任務建立期間手動啟動任務,則使用 AWS DMS 主控台中的重新啟動動作來啟動複寫。這將重新載入遷移中的所有資料表。
您也可以使用重新載入資料表資料選項,重新載入遷移期間失敗的特定資料表。這代表已經載入的資料表不需要再次載入,而任何尚未完成載入的資料表則會重新載入。
如果在遷移多個資料表時使用恢復選項,則未完全完成的資料表將重新開始。已完成遷移的資料表不受影響。如果您遷移的是單一資料表,最佳做法是重新啟動任務而不是使用恢復選項。
遷移現有資料並複寫正在進行的變更 (完整載入和 CDC)
當您使用完整載入和 CDC 任務時,AWS DMS 會遷移資料表資料,然後套用來源上發生的資料變更。如果您重新啟動任務,系統會重新載入所有資料表,並從重新啟動的時間點開始擷取來源的變更資料。如果您的任務設定為「不進行任何操作」準備模式,請在重新啟動任務之前,手動清空目標資料表。
如果您恢復任務,則只有在上一次停止點之後擷取的變更會套用到資料庫中。如果遷移任務在 CDC 階段停止,則 AWS DMS 會保留檢查點資訊以供將來使用。您可以在 AWS DMS 主控台的 Overview details (概觀詳細資訊) 索引標籤中查看任務檢查點。
僅複寫資料變更 (僅限 CDC)
如果您使用的是「僅限 CDC」任務,則可以從目前時間或 CDC 起始點開始擷取來源資料變更。如果在定義 CDC 起始點時重新啟動任務,則重新載入作業將載入從該時間點開始的所有變更。如果重新啟動沒有 CDC 起始點的任務,那麼在任務停止到重新啟動期間的 CDC 變更將會遺失。
恢復作業會從上次停止點繼續複寫變更,無論 CDC 起始點組態為何。如果您使用「截斷」目標資料表準備模式重新啟動任務,則 AWS DMS 會保留現有的目標資料表及其中繼資料。但是,它會在重新啟動遷移之前刪除這些資料表中的所有現有資料。
恢復或重新啟動 AWS DMS 任務的常見情境
以下是一些可以在 AWS DMS 任務上使用恢復或重新啟動作業的常見範例。
重新啟動 AWS DMS 任務:
- 如果來源資料庫管理系統 (DBMS) 不包含復原日誌檔案或交易日誌檔案來還原 CDC 流程,請重新啟動該任務。重新啟動任務將載入所有資料表資料,並繼續擷取變更。
- 如果 AWS DMS 任務處於錯誤狀態,則表示該任務中的一個或多個資料表無法遷移。當處於「錯誤」狀態時,任務會繼續從選擇規則載入其他資料表,但若任務處於「失敗」狀態,則會因嚴重錯誤而停止執行。解決錯誤後,請重新載入資料表或重新啟動任務,以解決錯誤狀態。如需詳細資訊,請參閱為什麼我的 AWS DMS 任務處於錯誤狀態?
- 如果「完整載入和 CDC」或「僅限 CDC」任務停止,則資料變更可能會從記憶體溢出到磁碟。根據交換到磁碟的變更資料量,任務恢復可能需要很長時間才能繼續進行複寫。這是因為 AWS DMS 需要花較長的時間從磁碟讀取這些變更。因此,如果可行的話,請重新啟動任務以避免等待時間。
- 如果您在使用 Oracle LogMiner 和 AWS DMS Binary Reader 之間切換,請務必重新啟動 CDC 任務。
注意: 修改 CDC 方法後,如果重新啟動設定了 CDC 復原檢查點的僅限 CDC 任務,您可能會看到類似以下的錯誤訊息:
"[SOURCE_CAPTURE ]D: Invalid context provided for the Binary Reader based CDC.Restart task is required."
若要解決此錯誤,請根據 CDC 起始點中的時間戳記啟動任務。
恢復 AWS DMS 任務:
- 如果您將任務移至新的複寫執行個體,請恢復該任務以從上次停止的位置繼續複寫變更。
- 如果您想要升級來源資料庫或目標資料庫,請停止在這些資料庫上執行的任何 AWS DMS 任務。升級完成後,恢復您的任務。
- 如果您打算升級來源資料庫或目標資料庫,請停止在這些資料庫上執行的任何 AWS DMS 任務。升級完成後恢復任務。但是,若要執行 PostgreSQL 引擎版本升級,執行個體上不能有任何複寫槽。因此,請在升級引擎之前刪除所有複寫槽,然後重新啟動任務以重新建立複寫槽。
相關資訊
資料遷移來源
使用 AWS DMS 複寫執行個體
重新啟動複寫執行個體