我可利用 AWS DMS 工作移轉哪些物件?

2 分的閱讀內容
0

我有個 AWS Database Migration Service (AWS DMS) 工作,該工作未移轉所有的資料庫結構描述物件。AWS DMS 工作會移轉哪些物件,以及如何移轉剩餘的物件?

簡短描述

如果您的 AWS DMS 工作未移轉物件,可能是因為 AWS DMS 工作無須移轉此類物件。AWS DMS 會建立許多物件,例如資料表及主索引鍵,但從來源移轉資料不需要的物件不會包含在內。AWS DMS 不會建立的物件範例包含次要索引、資料預設值及非主索引鍵的條件約束

如需有關 AWS DMS 會建立哪些物件的詳細資訊,請參閱 AWS 資料庫移轉服務的移轉工作疑難排解

若要移轉其餘 AWS DMS 未移轉的物件,請利用以下方法:

  • 有關同質移轉 (在同類引擎的兩個資料庫之間),請利用引擎的原生工具匯出匯入結構描述本身來移轉結構描述,無須任何資料。
  • 有關異質移轉 (在使用非同類引擎的兩個資料庫之間),請利用 AWS Schema Conversion Tool (AWS SCT) 來產生完整的目標結構描述。

解決方式

檢查物件是否來自 AWS DMS 工作移轉

首先,請利用以下準則檢查物件是否來自 AWS DMS 工作移轉:

  • AWS DMS 工作會在目標建立資料表,以及主索引鍵的條件約束及索引。
  • 如果沒有主索引鍵,則工作會建立唯一索引鍵 (如果存在於來源資料表)。
  • 如果 NOT NULL 條件約束存在來源資料表,則 AWS DMS 工作會在目標建立 NOT NULL 條件約束。這不包含大型物件 (LOB) 欄位。如果 AWS DMS 建立目標資料表,則預設會將 LOB 欄位設為 Null。如需詳細資訊,請參閱移轉大型二進位物件 (LOB)
  • 如果來源資料表包含自動遞增欄位,則無須移轉自動遞增屬性。
  • AWS DMS 工作無須複寫其他資料表特定屬性,例如外部索引鍵條件約束、檢查、資料預設值與註解。
  • AWS DMS 工作無須移轉資料庫物件,例如次要索引、檢視、程序、函數、套件與觸發程序等等。分別移轉這些物件。

利用引擎的原生工具移轉物件 (同質移轉)

對於同質資料庫移轉,請利用您的原生工具匯出結構描述資料,而無須資料。僅限中繼資料傾印將匯入目標資料庫來建立資料庫物件,而無須任何資料。然後,執行 AWS DMS 工作,並將 TargetTablePrepMode 工作設為 TRUNCATE_BEFORE_LOAD。這表示工作無須中斷並在目標重新建立資料表。

Oracle

若要利用 Oracle 資料庫移轉物件,請利用匯出資料幫浦公用程式 (expdp) 來進行僅中繼資料傾印。利用 CONTENT=METADATA_ONLY 參數,資料幫浦公用程式只會卸載資料庫物件定義。該公用程式無須卸除任何資料表的列資料。

1.    若要進行僅中繼資料傾印,請建立參數檔來匯出結構描述:

$> cat export_sample_user.par 
userid=DMS_USER/password@SOURCE_DB
directory=DATA_PUMP_DIR
logfile=export_dms_sample_user_metadata.log
dumpfile=export_dms_sample_user_metadata_%U.dmp
schemas=DMS_SAMPLE
CONTENT=METADATA_ONLY

2利用 expdp 公用程式執行匯出操作:

expdp parfile=export_sample_user.par

3.    在來源資料庫 DATA_PUMP_DIR 建立傾印檔之後,將其複製到目標 Oracle 資料庫 DATA_PUMP_DIR。若要在目標 Oracle 資料庫建立物件,請執行匯入資料幫浦公用程式 (impdp) 來匯入中繼資料:

impdp admin@TARGET_DB directory=DATA_PUMP_DIR logfile=import.log dumpfile=export_dms_sample_user_metadata_%U.dmp

SQL 伺服器

若要利用 SQL 伺服器移轉物件,請產生資料庫結構描述的 SQL 指令碼:

  1. 利用 SQL 伺服器管理工作室 (SSMS) 登入來源資料庫。
  2. 在要產生指令碼的資料庫按一下滑鼠右鍵,選取 Tasks (工作),然後選取 Generate Scripts (產生指令碼)。
  3. Select specific database objects (選取特定資料庫物件) 底下,選取您要使用的資料表、檢視和任何其他物件,然後選取 Next (下一步)。
  4. 選取 Advanced (進階) 按鈕,然後選取要編寫指令碼的資料類型。
  5. 如果您想要取得次要索引的 SQL,請將 Script indexes (指令碼索引) 設為 true。在預設情況下,指令碼索引設定為 false。
  6. 選取您要儲存指令碼的方式。例如,在磁碟建立 SQL 檔案、將 SQL 複製到新的查詢視窗,或將指令碼複製到剪貼簿。
  7. 選取 Next (下一步)。
  8. 再次選取 Next (下一步),然後選取 Finish (完成)。

若要在目標資料庫建立物件,請執行在完成這些步驟之後所產生的 SQL 指令碼。

MySQL

若要使用 MySQL 移轉物件,請利用 mysqldump 公用程式來產生僅包含結構描述資料的傾印檔案。--no-data 選項告訴 mysqldump 請勿轉傾印資料表資料,因此傾印檔案的結果僅包含建立資料表的陳述式。有關僅限定義的傾印,請加入 --routines--events 選項,以便包含儲存的常式和事件定義。

例如:

mysqldump --no-data --routines --events -h SOURCE_DB_SERVER_NAME -u DMS_USER -p SOURCE_DB > path_to_dump_file.sql

若要在目標資料庫建立物件,請執行在執行上一個命令之後所產生的 SQL 指令碼。

PostgreSQL

若要利用 PostgreSQL 資料庫移轉物件,請利用 pg_dump 公用程式來產生僅包含結構描述資料的傾印檔案。-s--schema-only 選項會傾印物件定義 (結構描述),而非資料。

例如:

pg_dump --host SOURCE_DB_SERVER_NAME --port 5432 --username DMS_USER --schema-only --verbose SOURCE_DB > path_to_dump_file.sql

若要在目標資料庫建立物件,請執行在執行上一個命令之後所產生的 SQL 指令碼。

利用 AWS Schema Conversion Tool (AWS SCT) 移轉物件

利用 AWS SCT 將現有的資料庫結構描述從資料庫引擎轉換及移轉到另一個資料庫引擎。或者,利用 AWS SCT 將現有的內部部署資料庫結構描述複製到執行相同引擎的 Amazon Relational Database Service (Amazon RDS) 資料庫執行個體。

若要轉換資料庫結構描述,請依照以下步驟執行:

  1. 在 AWS SCT 建立移轉規則
  2. 利用 AWS SCT 轉換您的結構描述
  3. 在 AWS SCT 儲存並套用轉換後的結構描述

如需詳細資訊,請參閱利用 AWS SCT 轉換資料庫結構描述


相關資訊

AWS DMS 的高階檢視

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