跳至內容

當我使用 AWS DMS 將來源資料庫遷移到 Amazon Redshift 時,如何對資料複寫問題和變更資料擷取 (CDC) 失敗進行疑難排解?

2 分的閱讀內容
0

當我使用 AWS Database Migration Service (AWS DMS) 將來源資料庫遷移到 Amazon Redshift 時,我遇到資料複寫問題和變更資料擷取 (CDC) 失敗。

解決方法

CDC 失敗

如果您遇到 CDC 失敗,請檢閱 AWS DMS 任務日誌中與特定資料表相關的錯誤訊息。您也可以檢查 AWS DMS 任務的 CDCLatencySourceCDCLatencyTarget Amazon CloudWatch 指標

根據您收到的錯誤訊息,採取以下一或多項動作:

  • 確認來源資料表具有主索引鍵。對於 PostgreSQL 來源,擷取的資料表必須具有主索引鍵,AWS DMS 才能處理 DELETEUPDATE 作業。
  • 確認您已將來源資料庫上的變更日誌保留期間設定為至少 24 小時。
  • 確認 AWS DMS 使用的 AWS 帳戶具有來源目標資料庫所需的權限。

資料不一致

若要解決資料不一致,請完成以下步驟:

  1. 建立僅驗證任務,以識別來源與目標之間不相符的記錄。如需更多資訊,請參閱 Redshift 驗證效能
  2. 查詢目標資料庫中的 awsdms_validation_failures_v1 資料表,以檢視不一致的情況。
  3. 檢查目標資料庫上的 awsdms_apply_exceptions 資料表,以取得遷移失敗的詳細錯誤資訊。
  4. 確認所有複寫的目標資料表都具有主索引鍵或唯一索引。
    **注意:**Amazon Redshift 不會強制執行唯一、主索引鍵和外部索引鍵限制。因此,可能會出現重複。
  5. 如果您使用 PostgreSQL 作為來源,則必須為來源和目標資料表定義主索引鍵。
  6. 對於有不一致的資料表,請使用 AWS DMS 任務重新載入這些資料表。

資料類型轉換問題

若要解決資料類型轉換問題,請完成以下步驟:

  1. 檢閱 AWS DMS 任務日誌中,與資料截斷或字串長度超過資料定義語言 (DDL) 長度相關的錯誤。

  2. 檢查 awsdms_apply_exceptions 資料表中的遷移失敗情況。

  3. 調整目標 Redshift 資料庫中的欄資料類型,以容納較大的資料。例如,對於有長度問題的欄,將 varchar 變更為 text

  4. 修改任務設定中的 MaxLobSize 參數,以處理較大的資料大小,如以下範例所示:

    {
      "TargetMetadata": {
        "MaxLobSize": 32
      }
    }
  5. 確認您使用的是支援的資料類型,並確認您已正確對應來源和目標。

效能問題與高延遲

若要改善效能並降低延遲,請採取以下動作:

重複記錄

若要防止重複記錄,請採取以下動作:

  • 確認複寫的目標資料表具有主索引鍵或唯一索引。
  • 在目標上手動建立具有主索引鍵的資料表,並在任務設定中將 TargetTablePrepMode 設定為 DO_NOTHINGTRUNCATE_BEFORE_LOAD
  • 使用 primary-key-def AWS DMS 資料表對應規則明確定義主索引鍵。

遺失或不完整的資料

若要解決遺失或不完整的資料,請採取以下動作:

  • 檢閱 AWS DMS 任務日誌中與特定資料表相關的警告或錯誤。
  • 檢查 CDCIncomingChanges 指標,以判斷 AWS DMS 是否擷取來源中的所有變更。
  • 確認 AWS DMS 使用的來源資料庫使用者帳戶,具有存取所有必要資料表和結構描述的必要權限。
  • 建立僅驗證任務,以識別不相符的記錄。如需更多資訊,請參閱 Redshift 驗證效能
  • 對於持續發生問題的資料表,您可以建立個別的 AWS DMS 任務,以更細部地進行疑難排解。

相關資訊

AWS Database Migration Service 的最佳實務

AWS Database Migration Service 中的遷移任務疑難排解

AWS DMS 資料驗證

AWS 官方已更新 4 個月前