使用 AWS SCT 和 AWS DMS 將適用於甲骨文的亞馬遜 RDS 遷移到適用於 PostgreSQL 的 CLI 馬遜 RDS CloudFormation - AWS 方案指引

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

使用 AWS SCT 和 AWS DMS 將適用於甲骨文的亞馬遜 RDS 遷移到適用於 PostgreSQL 的 CLI 馬遜 RDS CloudFormation

創建者:皮尼什辛格爾(AWS)

環境:PoC 或試點

資料來源:Amazon RDS for Oracle

目標:Amazon RDS for PostgreSQL

R 型:重新建築

工作負載:甲骨文; 開源

技術:移轉;資料庫

AWS 服務:AWS DMS; Amazon RDS; AWS SCT

Summary

此模式顯示如何使用 AWS Command Line Interface (AWS CLI) (AWS CLI) 將適用於甲骨文資料庫執行個體的多 TB Amazon Relational Database Service 服務 (Amazon RDS) 遷移到適用於 PostgreSQL 的資料庫執行個體。此方法提供最短的停機時間,而且不需要登入 AWS 管理主控台。

使用 AWS Schema Conversion Tool (AWS SCT) 和 AWS Database Migration Service (AWS DMS) 主控台,此模式有助於避免手動設定和個別遷移。此解決方案會為多個資料庫設定一次性組態,並在 AWS CLI 上使用 AWS SCT 和 AWS DMS 來執行遷移。

該模式使用 AWS SCT 將資料庫架構物件從亞馬遜 RDS 轉換為適用 Amazon RDS for PostgreSQL,然後使用 AWS DMS 遷移資料。使用 AWS CLI 中的 Python 指令碼,您可以使用 AWS 範本建立 AWS SCT 物件和 AWS DMS 任務。 CloudFormation

先決條件和限制

先決條件

  • 作用中的 AWS 帳戶

  • 適用於甲骨文資料庫執行個體的現有 Amazon RDS。

  • 現有的亞馬遜 RDS 資料庫執行個體。 

  • 具有 Windows 或 Linux 作業系統的 Amazon EC2 執行個體或本機電腦,用於執行指令碼。

  • 瞭解下列 AWS DMS 移轉任務類型:full-loadcdcfull-load-and-cdc。 如需詳細資訊,請參閱 AWS DMS 文件中的建立任務。 

  • 使用適用於甲骨文和 PostgreSQL 資料庫引擎的 Java 資料庫連接 (JDBC) 驅動程式進行安裝和設定的 AWS SCT。如需詳細資訊,請參閱 AWS SCT 文件中的安裝 AWS SCT 和安裝所需的資料庫驅動程式。 

  • 已安裝 AWS SCT 資料夾中的AWSSchemaConversionToolBatch.jar檔案,已複製到您的工作目錄。

  • cli-sct-dms-cft.zip文件(附加),下載並提取到您的工作目錄中。

限制

  • 適用於 Oracle 資料庫執行個體的來源 Amazon RDS 執行個體的最低需求為: 

    • 甲骨文版本 12c(v12.1.0.2,版 12.2.0.1),18c(v18.0.0.0)和 19c(版 19.0.0.0),適用於企業版,標準版,標準版和標準二版。

    • 雖然 Amazon RDS 支援甲骨文 18c (v18.0.0.0),但此版本處於淘汰的路徑上,因為甲骨文在該日期之後不再提供 18c 的修補程式。 end-of-support 如需詳細資訊,請參閱 Amazon RDS 文件中的甲骨文。

    • Amazon RDS for Oracle 11g 不再受支持。

  • 適用於 PostgreSQL 資料庫執行個體的目標 Amazon RDS 資料庫執行個體的最低需求為: 

    • 第 9 版 PostgreSQL 版本 9.5 和 9.6 版)、第 10.x 版、11.x 版、第 12 版和第 13.x 版

產品版本

  • Amazon RDS for Oracle 文資料庫執行個體 12.1.0.2 及更新版本

  • Amazon RDS for PostgreSQL 庫執行個體 11.5 版及更新版本

  • AWS CLI 第 2 版 

  • 最新版本的 AWS SCT

  • Python 3 的最新版本

架構

源, 技術, 堆棧

  • Amazon RDS for Oracle

目標技術堆疊

  • Amazon RDS for PostgreSQL

來源與目標架構

下圖顯示使用 AWS DMS 和 Python 指令碼將 Amazon RDS for Oracle 文資料庫執行個體遷移到 Amazon RDS 適用於 PostgreSQL 的資料庫執行個體。

使用 AWS DMS 和 Python 將適用於甲骨文資料庫執行個體的 RDS 移轉至適用於 PostgreSQL 的資料庫執行個體。

此圖表顯示下列移轉工作流程:

  1. Python 指令碼使用 AWS SCT 連線到來源和目標資料庫執行個體。

  2. 使用者使用 Python 指令碼啟動 AWS SCT,將甲骨文程式碼轉換為 PostgreSQL 程式碼,然後在目標資料庫執行個體上執行該程式碼。

  3. Python 指令碼會為來源和目標資料庫執行個體建立 AWS DMS 複寫任務。

  4. 使用者部署 Python 指令碼以啟動 AWS DMS 任務,然後在資料遷移完成後停止任務。

自動化和規模

您可以通過在單個程序中向 Python 腳本中添加多個功能的其他參數和安全相關更改來自動執行此遷移。 

工具

  • AWS Command Line Interface (AWS CLI) (AWS CLI) 是一種開放原始碼工具,可協助您透過命令列殼層中的命令與 AWS 服務互動。

  • AWS 可 CloudFormation協助您設定 AWS 資源、快速且一致地佈建 AWS 資源,並在 AWS 帳戶和區域的整個生命週期中進行管理。這種模式使用 Python 腳本將 .csv 輸入文件轉換為 .json 輸入文件。在 AWS CLI 命令中使用 .json 檔案來建立 AWS 堆疊,該 CloudFormation 堆疊會使用 Amazon 資源名稱 (ARN)、遷移類型、任務設定和表格對映建立多個 AWS DMS 複寫任務。

  • AWS Database Migration Service (AWS DMS) 可協助您將資料存放區遷移到 AWS 雲端,或在雲端和現場部署設定的組合之間遷移資料存放區。此模式使用 AWS DMS 透過命令列執行的 Python 指令碼建立、啟動和停止任務,並建立 AWS CloudFormation 範本。

  • AWS Schema Conversion Tool (AWS SCT) 會自動將來源資料庫結構描述和大部分自訂程式碼轉換為與目標資料庫相容的格式,藉此支援異質資料庫遷移。此模式需要已安裝 AWS SCT 目錄中的AWSSchemaConversionToolBatch.jar檔案。

Code

cli-sct-dms-cft.zip文件(附件)包含此模式的完整源代碼。

史诗

任務描述所需技能

將 AWS SCT 設定為從 AWS CLI 執行。

1. 使用下列格式,在database_migration.txt檔案中設定來源和目標環境組態詳細資訊:

#source_vendor,source_hostname,source_dbname,source_user,source_pwd,source_schema,source_port,source_sid,target_vendor,target_hostname,target_user,target_pwd,target_dbname,target_port ORACLE,myoracledb.cokmvis0v46q.us-east-1.rds.amazonaws.com,ORCL,orcl,orcl1234,orcl,1521,ORCL,POSTGRESQL,mypgdbinstance.cokmvis0v46q.us-east-1.rds.amazonaws.com,pguser,pgpassword,pgdb,5432

2. 根據下列檔案中的需求修改 AWS SCT 組態參數:project_settings.xmlOracle_PG_Test_Batch.xml、和ORACLE-orcl-to-POSTGRESQL.xml

DBA

執行 run_aws_sct.py Python 本。

使用下列命令執行 run_aws_sct.py Python 指令碼:

$ python run_aws_sct.py database_migration.txt

Python 腳本將數據庫對象從甲骨文轉換為 PostgreSQL,並創建在 PostgreSQL 格式的 SQL 文件。此指令碼也會建立 Database migration assessment report .pdf 檔案,以提供資料庫物件的詳細建議和轉換統計資料。

DBA

在 Amazon RDS for PostgreSQL。

  1. 必要時,手動修改 AWS SCT 產生的 SQL 檔案。

  2. 在您的 Amazon RDS 資料庫執行個體中執行 SQL 檔案並建立物件。

DBA
任務描述所需技能

建立 AWS DMS 複寫執行個體。

登入 AWS 管理主控台,開啟 AWS DMS 主控台,然後建立根據您的需求設定的複寫執行個體。

如需詳細資訊,請參閱 AWS DMS 文件中的建立複寫執行個體和 AWS Support 文件中的如何建立 AWS DMS 複寫執行個體。

DBA

建立來源端點。

在 AWS DMS 主控台上,選擇端點,然後根據您的需求為 Oracle 資料庫建立來源端點。 

注意:額外的連接屬性必須是numberDataTypeScale一個-2值。

如需詳細資訊,請參閱 AWS DMS 文件中的建立來源和目標端點

 

DBA

建立目標端點。

在 AWS DMS 主控台上,選擇端點,然後根據您的需求為 PostgreSQL 資料庫建立目標端點。 

如需詳細資訊,請參閱 AWS DMS 文件中的建立來源和目標端點

DevOps 工程師

設定要從 AWS CLI 執行的 AWS DMS 複寫詳細資訊。

使用下列格式,使用來源端點 ARN、目標端點 ARN 和複寫執行個體 ARN,在dms-arn-list.txt檔案中設定 AWS DMS 來源和目標端點以及複寫詳細資訊:

#sourceARN,targetARN,repARN arn:aws:dms:us-east-1:123456789012:endpoint:EH7AINRUDZ5GOYIY6HVMXECMCQ arn:aws:dms:us-east-1:123456789012:endpoint:HHJVUV57N7O3CQF4PJZKGIOYY5 arn:aws:dms:us-east-1:123456789012:rep:LL57N77AQQAHHJF4PJFHNEDZ5G
DBA

執行 dms-create-task .py 指 Python 碼以建立 AWS DMS 任務。

1. 使用下列命令執行 dms-create-task.py Python 指令碼:

$ python dms-create-task.py database_migration.txt dms-arn-list.txt <cft-stack-name> <migration-type>

  • database_migration.txt是資料庫移轉文字檔

  • dms-arn-list.txt是 AWS DMS 的 ARN 清單

  • <cft-stack-name>是使用者定義的 AWS CloudFormation 堆疊名稱

  • <migration-type>是移轉類型 (全負載cdc 或) full-load-and-cdc

2. 視您的遷移類型而定,您可以使用下列命令建立三種類型的 AWS DMS 任務:

  • $ python dms-create-task.py database_migration.txt dms-arn-list.txt dms-cli-cft-stack full-load

  • $ python dms-create-task.py database_migration.txt dms-arn-list.txt dms-cli-cft-stack cdc

  • $ python dms-create-task.py database_migration.txt dms-arn-list.txt dms-cli-cft-stack full-load-and-cdc

3. 已建立 AWS CloudFormation 堆疊和 AWS DMS 任務 

 

DBA

檢查 AWS DMS 任務是否已準備就緒。

在 AWS 主控台中,在「狀態」區段中檢查 AWS DMS 任務是否處於Ready狀態

DBA
任務描述所需技能

啟動 AWS DMS 任務。

使用下列命令執行 dms-start-task.py Python 指令碼:

$ python dms-start-task.py start ‘<cdc-start-datetime>’

附註:開始日期和時間必須為'DD-MON-YYYY'或時間'YYYY-MM-DDTHH:MI:SS'戳記資料類型格式 (例如,‘01-Dec-2019’‘2018-03-08T12:12:12’)

您可以在 AWS DMS 主控台的「任務」頁面上,在遷移任務的「表格統計資料」索引標籤中查看 AWS DMS 務狀態。

DBA

驗證資料。

  1. 完成全負載移轉之後,工作會持續執行,以進行持續的資料變更 (CDC)。

  2. 當 CDC 完成或不需要移轉其他變更時,請檢閱並驗證 Oracle 和 PostgreSQL 資料庫中的移轉任務結果和資料。

  3. 您可以在 AWS DMS 主控台的任務頁面上 Validation state Validation pending Validation failedValidation suspended,在資料庫遷移任務的 [表格統計資料] 索引標籤中檢查狀態和計數欄 (、、、和Validation details) 來驗證資料。 

如需詳細資訊,請參閱 AWS DMS 文件中的 AWS DMS 資料驗證

DBA

停止 AWS DMS 任務。

使用下列命令執行 Python 指令碼:

$ python dms-start-task.py stop

注意:根據驗證failed狀態,AWS DMS 任務可能會以狀態停止。如需詳細資訊,請參閱 < 其他資訊 > 一節中的疑難排解表格。

DBA

故障診斷

問題解決方案

AWS SCT 來源和目標測試連線失敗

設定 JDBC 驅動程式版本和 VPC 安全群組輸入規則,以接受傳入流量。

來源或目標端點測試回合失敗

檢查端點設定和複製執行個體是否處於Available狀態。檢查端點連線狀態是否為Successful。 

如需詳細資訊,請參閱 AWS Support 文件中的如何對 AWS DMS 端點連線故障進行疑難排解。

完全負載運行失敗

檢查來源和目標資料庫是否具有相符的資料類型和大小。 

如需詳細資訊,請參閱 AWS DMS 文件中的 AWS DMS 中的移轉任務疑難排解

驗證執行錯誤

檢查表是否有一個主鍵,因為非主鍵表沒有被驗證。

如果資料表有主索引鍵和錯誤,請檢查來源端點中的額外連線屬性是否具有numberDataTypeScale=-2

如需詳細資訊,請參閱使用 Oracle 做為 AWS DMS 來源時的額外連線屬性 OracleSettings,以及 AWS DMS 文件中的疑難排解

相關資源

附件

若要存取與此文件相關聯的其他內容,請解壓縮下列檔案:attachment.zip