該如何針對 AWS DMS 中來源資料庫和目標資料庫之間的資料資料不相符問題進行疑難排解?

1 分的閱讀內容
0

我有一個 AWS Database Migration Service (AWS DMS) 任務處於遷移的完整載入完成或正在進行的複寫階段。但目標資料庫中,下游資料與來源資料不相符。該如何針對來源資料庫和目標資料庫之間的資料資料不相符問題進行疑難排解?

簡短描述

當您使用 AWS DMS 在異質環境中遷移資料時,出現資料資料不相符的可能原因有很多。例如:

  • 如果您未使用正確的 LOB 設定,則會根據 MaxLobSize 任務設定截斷資料。導致目標 LOB 資料欄不包含完全相同的資料來源。
  • 在異質遷移期間,AWS DMS 會將來源資料類型轉換為內部資料類型。然後,AWS DMS 會將內部資料轉換為目標資料類型。但由於 AWS DMS 並非完整支援特定來源和目標資料類型,因此您可能會看到來源和目標之間的資料不相符的狀況。
  • 如果在變更資料擷取 (CDC) 複寫期間發生任何錯誤或例外狀況,則目標資料庫的 DML 交易可能會失敗。

解決方案

進行疑難排解前先執行初步檢查

根據本文章所述的步驟對問題進行疑難排解之前,請先執行下列初步檢查:

  • 如果您使用的是僅限完整載入任務,請確認遷移已完成,且任務已進入停止狀態。
  • 如果您使用的是完整載入或僅限 CDC 任務,請檢查 CDCLatencySource 和 CDCLatencyTarget Amazon CloudWatch 指標。確認您沒有發現任何延遲。
  • 確認沒有其他應用程式連線至來源或目標資料庫。這可能會導致資料操作。例如,如果您正在執行僅限完整載入任務,而來源中的資料遭到另一個應用程式修改,則您可能會看到目標資料不相符的狀況。或者,如果目標資料庫具有 DML 觸發程序,或其他應用程式將資料寫入遷移的目標資料表,則您也會看到目標與來源之間資料不相符的狀況。

查詢目標上的 awsdms_validation_failures_v1 資料表

如果您的主要目標是資料一致性,請務必在建立 AWS DMS 任務時啟用驗證。

開啟驗證時的疑難排解

如果已開啟驗證,您可以檢查目標資料庫中的 awsdms_Validation_failures_v1 資料表。如果有任何記錄在遷移期間進入 ValidationSuspended 或 ValidationFailed狀態,則 AWS DMS 會將診斷資訊寫入 awsdms_validation_failures_V1。透過執行類似下列的命令,查詢此這禮拜以對驗證錯誤進行疑難排解:

select * from awsdms_validation_failures_v1 where TASK_NAME = 'ABC123FGJASHKNA345';

檢查輸出中的詳細資料欄,以取得有關失敗的資訊。使用索引鍵欄以比較來源與目標之間的記錄資料。如需詳細資訊,請參閱 AWS DMS 資料驗證文件的疑難排解部分。

關閉驗證時的疑難排解

如果您尚未在 AWS DMS 任務上開啟驗證,請建立僅限驗證任務:

  • 若要進行一次性遷移,請使用僅限完整載入驗證功能,快速比較來源和目標之間的所有資料列。
  • 對於進行中的複寫,請使用僅限 CDC 僅限驗證任務。CDC 僅限驗證任務會驗證來源與目標資料表之間的現有資料列。任務會在出現時隨著持續變更繼續進行,並報告任何資料驗證失敗。

檢查來源和目標資料中的限制

識別不相符的資料後,請檢查來源和目標是否有與其資料類型相關聯的限制。例如,當您使用 PostgreSQL 作為來源時,您無法遷移 ENUM 資料類型。

檢查任務日誌中的錯誤

檢查驗證失敗時的任務日誌是否存在錯誤。或者,檢查控制資料表,以查看是否在資料複寫階段期間記錄任何例外狀況。

解決截斷造成的資料不相符狀況

當您使用受限制的 LOB 模式時,AWS DMS 會在複寫執行個體中預先配置記憶體。然後,其會使用 LoBMaxSize 任務設定大量載入 LOB 資料。AWS DMS 會截斷超過 LOB 大小上限的所有 LOB,然後對日誌檔案發出警告。

檢查日誌檔案中是否有指示資料已截斷的警告訊息,然後檢查對應 LOB 欄的長度上限。定義大於 LOB 資料欄長度的 LobMaxSize,這樣資料就不會被截斷。使用診斷支援指令碼找出哪些資料表具有 LOB 資料,然後進行相應的查詢。

如果 LOB 資料欄的大小上限超過 100 MB,請使用完整 LOB 或內嵌 LOB 模式以停止 LOB 資料欄資料截斷。


相關資訊

僅限驗證任務

AWS 官方
AWS 官方已更新 2 年前