在 AWS DMS 遷移期間,何時可以將次要物件新增至目標資料庫?

上次更新日期:2022 年 8 月 19 日

我可以在哪個遷移階段使用 AWS Database Migration Service (AWS DMS) 將次要物件新增至目標資料庫? 另外,我可以使用哪些任務設定讓我可以在目標資料庫上建立次要物件?

簡短描述

AWS DMS 會使用 TargetTablePrepMode 選項,在目標資料庫上建立資料表。AWS DMS 建立目標資料表時,只會遷移所需的物件,以便有效地將資料遷移至目標。例如,AWS DMS 會建立資料表、主索引鍵以及在某些情況下建立唯一索引。但是,不會建立次要索引、非主索引鍵條件約束、資料預設值或使用者帳戶。如需詳細資訊,請參閱遺失外部索引鍵和次要索引

如果您在遷移前於目標上手動建立資料表,則 最佳實務為在遷移開始前刪除次要物件 (例如次要索引)。

注意:這不適用於僅限變更資料擷取 (CDC) 任務。

因此,若要確保遷移成功並提升任務效能,請務必瞭解何時建立次要物件。時間依任務使用的遷移方法而有所不同:

  • 僅完整載入 (遷移現有資料)
  • 完整載入及 CDC (遷移現有資料並複製正在進行的變更)
  • CDC (僅複製資料變更)

解析度

僅完整載入

對於僅限完整載入的任務,最佳實務為在遷移開始前刪除主索引鍵和所有次要物件。在完整載入完成前,請勿建立這些物件。如果於完整載入期間在目標資料庫上有次要物件,則可能會看到額外維護開銷。

如果目標上有外部索引鍵,可能會導致任務失敗。發生這種情況的原因是,除非您在資料表對映中手動指定,否則任務會以沒有特定順序將資料表群組一同載入。

同樣地,如果目標資料庫中存在插入、更新或刪除觸發程序,也可能會導致錯誤。例如,由先前載入之資料表上的插入觸發程序觸發的資料列插入可能會造成重複的資料列。其他類型的觸發程序也會影響效能,因其會導致額外的處理。

完整載入和 CDC

對於完整載入和 CDC 任務,最佳實務為在遷移開始前刪除所有次要物件。但是,您必須在遷移的不同階段,於目標資料庫上套用次要物件。

檢閱完整載入和 CDC 任務遷移的階段,以及套用特定次要物件的階段:

  • 現有資料的完整載入 - 在任務已完成完整載入後,但在其套用擷取的快取變更前,新增次要索引。
  • 快取變更的應用程式 - 在任務套用快取變更後新增外部索引鍵(參考完整性條件約束)。
  • 進行複製中 - 在遷移完成後和應用程式切換前建立觸發器。

當完整載入進行中時,您對正載入的資料表所做的任何變更都會進行快取。這些快取的變更會在資料表的完整載入完成時套用。在完整載入完成並套用快取變更後,目標資料表會在交易上保持一致性。AWS DMS 接著會開始進行中的複製階段。如需有關上述的詳細資訊,請參閱 AWS DMS 的高階檢視

若要在遷移期間停止任務,請使用下列任務設定:

  • 在套用快取變更前,請使用 StopTaskCachedChangesNotApplied 停止任務。
  • 在應用快取變更後,請使用 StopTaskCachedChangesApplied 停止任務。

注意:您可以使用 AWS Command Line Interface (AWS CLI) 開啟 StopTaskCachedChangesNotApplied 和 StopTaskCachedChangesApplied。如果您在執行 AWS CLI 命令時收到錯誤,請確保您使用的是最新版本的 AWS CLI

僅限 CDC 的任務

對於僅限 CDC 的任務,您可以於遷移前,在目標資料庫上建立次要索引和外部索引鍵。然後,在遷移完成後以及在應用程式切換前,在目標上建立觸發器。


此文章是否有幫助?


您是否需要帳單或技術支援?