使用 AWS CLI 和 AWS 雲端形成,將適用於 Amazon RDS for Oracle 文的 Amazon RDS 遷移到使用 AWS SCT 和 AWS DMS 的 Amazon RDS for PostgreSQL - AWS Prescriptive Guidance

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

使用 AWS CLI 和 AWS 雲端形成,將適用於 Amazon RDS for Oracle 文的 Amazon RDS 遷移到使用 AWS SCT 和 AWS DMS 的 Amazon RDS for PostgreSQL

由皮尼什單身 (AWS) 創建

:Conment PoC 或試驗

來源:Amazon RDS for Oracle

目標:Amazon RDS for PostgreSQL

R 類型 重新架構

工作負載:Oracle; 開放原始碼

技術:移轉; 資料庫

AWS 服務:AWS DMS; 亞馬遜 RDS; AWS SCT

Summary

此模式提供了一種將多 TB 移轉的停機時間降至最低的方法Amazon Relational Database Service (Amazon RDS)資料庫執行個體新增至Amazon RDS for PostgreSQL資料庫執行個體,不需登入 Amazon Web Services (AWS) 管理主控台。

此方法可協助您的組織避免使用 AWS Schema Conversion Tool (AWS SCT) 和 AWS Database Migration Service (AWS DMS) 主控台進行手動設定和個別遷移。相反地,您可以為多個資料庫設定一次性組態,並在 AWS 命令列界面 (AWS CLI) 上使用 AWS SCT 和 AWS DMS 執行移轉。

該模式使用 AWS SCT 將資料庫結構描述物件從 Amazon RDS for Oracle 的 Amazon RDS 轉換為適用於 PostgreSQL 的 Amazon RDS,然後使用 AWS DMS 遷移資料。在 AWS CLI 中使用 Python 指令碼,您可以使用 AWS 雲端形成範本來建立 AWS SCT 物件和 AWS DMS 任務。

先決條件和限制

先決條件

  • 作用中的 AWS 帳戶

  • Oracle 資料庫執行個體的現有 Amazon RDS for Oracle RDS。

  • Amazon RDS for PostgreSQL 資料庫執行個體。 

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

  • AWS SCT,安裝和設定適用於 Oracle 和 PostgreSQL 資料庫引擎的 Java Database Connectivity (JDBC) 驅動程式。如需此項目的詳細資訊,請參閱安裝 AWS SCT安裝必要的資料庫驅動程式存放在 AWS SCT 文件中的相關資訊。 

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

  • 所以此cli-sct-dms-cft.zip文件(附加),下載並解壓縮到您的工作目錄中。

  • 最新的 AWS DMS 複寫執行個體引擎版本。如需此項目的詳細資訊,請參閱如何建立 AWS DMS 複寫執行個體在 AWS Support 文件中,以及AWS DMS 3.4.4 版本說明存放在 AWS DMS 文件中。 

  • AWS CLI 版本 2,使用執行指令碼的 Amazon 彈性運算雲端 (Amazon EC2) 執行個體或作業系統 (OS) 的存取金鑰 ID、秘密存取金鑰和預設 AWS 區域名稱進行安裝和設定。如需此項目的詳細資訊,請參閱安裝、更新和解除安裝 AWS CLI 版本 2設定 AWS CLI存放在 AWS CLI 文件中。 

  • 熟悉 AWS CloudFormation 範本。如需此項目的詳細資訊,請參閱AWS CloudFormation 概念在 AWS CloudFormation 文件中。 

  • 在執行指令碼的 Amazon EC2 執行個體或作業系統上安裝和配置 Python。如需此項目的詳細資訊,請參閱Python 文件。 

限制

  • Oracle 資料庫執行個體的來源 Amazon RDS for Oracle 資料庫執行個體的最低需求如下: 

    • 適用於 Enterprise、Standard、Standard One 和 Standard Two 等版本的 Oracle 12c 版 (v12.1.0.2 版、v18.0.0.0 版) 和 19c 版 (v19.0.0.0 版)。

    • 雖然 Amazon RDS 支援 Oracle 18c (v18.0.0.0),但此版本即將遭到取代,因為 Oracle 將在支援日期後不再提供 18c 的修補程式。如需此項目的詳細資訊,請參閱Amazon RDS 上的 Oracle(位於 Amazon RDS 文件中)。

    • Amazon RDS for Oracle 11g 不再支援。

  • 您目標適用於 PostgreSQL 資料庫執行個體的 Amazon RDS 目標需求如下: 

    • PostgreSQL 第 9 版 (適用於 9.5 版和 9.6 版)、10.x 版、11.x 版、12.x 版、12.x 版以及 13.x 版以及 13.x 版

產品版本

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

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

  • AWS CLI 第 2 版 

  • AWS SCT 最新版本

Architecture

來源技術堆疊

  • Amazon RDS for Oracle

目標技術堆疊

  • Amazon RDS for PostgreSQL

 

來源與目標架構

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

此圖顯示以下使用 AWS CLI 的遷移工作流程:

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

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

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

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

自動化和擴充

您可以通過在單個程序中添加額外的參數和與安全性相關的更改到您的 Python 腳本中的多個功能來自動進行此遷移。 

Tools

  • AWS CLI— AWS 命 Command Line Interface (AWS CLI) 是一種開放原始碼工具,可讓您在命令列 shell 中使用命令來與 AWS 服務互動。

  • AWS CloudFormation— AWS CloudFormation 是一個能幫助您模型化與設定 AWS 資源的服務,讓您能花較少的時間管理這些資源,並且有更多時間專注在 AWS 中執行的應用程式上。這種模式將 .csv 輸入文件轉換為使用 Python 腳本的 .json 輸入文件。該 .json 檔案用於 AWS CLI 命令建立 AWS CloudFormation 堆疊,該堆疊使用 Amazon 資源名稱 (ARN)、遷移類型、任務設定和表格對映建立多個 AWS DMS 複寫任務。

  • AWS DMS— AWS Database Migration Service (AWS DMS) 可協助您快速、安全地將資料庫遷移至 AWS。此模式使用 AWS DMS 透過在命令列上執行的 Python 指令碼來建立、啟動和停止任務,並建立 AWS CloudFormation 範本。

  • AWS SCT— AWS Schema Conversion Tool (AWS SCT) 會將現有資料庫結構描述從一個資料庫引擎轉換到另一個資料庫引擎。這種模式需要AWSSchemaConversionToolBatch.jar檔案從已安裝的 AWS SCT 目錄中。

Code

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

Epics

任務描述所有技能
將 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 指令碼。

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

$ python run_aws_sct.py database_migration.txt

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

DBA
在 Amazon RDS for PostgreSQL 中建立物件。
  1. 必要時,手動修改 AWS SCT 產生的 SQL 檔案。

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

DBA
任務描述所有技能
建立 AWS DMS 複寫執行個體。

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

如需此項目的詳細資訊,請參閱建立複寫執行個體在 AWS 數據管理系統文件中,以及如何建立 AWS DMS 複寫執行個體在 AWS Support 文件中。

DBA
建立來源端點。

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

請注意:額外的連接屬性必須是numberDataTypeScale具有-2值。

如需此項目的詳細資訊,請參閱來源與目標端點在 AWS DMS 文件中。

 

DBA
建立目標端點。

在 AWS DMS 主控台上,選擇端點,然後根據您的需求為 PostgreSQL 數據庫創建一個目標端點。 

如需此項目的詳細資訊,請參閱來源與目標端點在 AWS DMS 文件中。

裝置工程師
將 AWS DMS 複寫詳細資訊設定為從 AWS CLI 執行。

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

#sourceARN,targetARN,repARN arn:aws:dms:us-east-1:424639141742:endpoint:EH7AQQAHHJVUV5EPBCZKGIOYIY,arn:aws:dms:us-east-1:424639141742:endpoint:INRUQY55NJU3CQF4PJFHNE6HVM,arn:aws:dms:us-east-1:424639141742:rep:DZ5GLL57N7O37VJF4RNVKTXECM
DBA
執行 dms-create-task.py 指令碼以建立 AWS 資料管理系統工作。

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 數據管理系統的 ARN 清單

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

  • <migration-type>是遷移類型(完整載入CDC, 或全負載和 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 任務狀態,在Table statistics索引標籤上的工作頁面上 AWS 指令。

DBA
驗證資料。
  1. 完整負載移轉完成後,工作會持續執行,進行持續的資料變更 (CDC)。

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

  3. 您可以通過檢查狀態和計數列(Validation stateValidation pendingValidation failedValidation suspended,以及Validation details) 在Table statistics索引標籤上的資料庫移轉工作工作頁面上 AWS 指令。 

如需此項目的詳細資訊,請參閱AWS DMS 資料驗證在 AWS DMS 文件中。

DBA
停止 AWS DMS 任務。

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

$ python dms-start-task.py stop

請注意:AWS DMS 任務可能會停止,並顯示failed 狀態,具體取決於驗證狀態。如需有關此問題的詳細資訊,請參閱其他資訊區段。

DBA

相關資源

其他資訊

故障診斷

下表提供疑難排解此病毒碼的相關指引。

問題

解決方案

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

 

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

 

來源或目標端點測試執行失敗

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

如需此項目的詳細資訊,請參閱如何疑難排解 AWS DMS 端點連線失敗在 AWS Support 文件中。

 

完整載入執行失敗

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

如需此項目的詳細資訊,請參閱對 AWS DMS 中的遷移任務進行故障診斷在 AWS DMS 文件中。

 

驗證執行錯誤

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

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

如需此項目的詳細資訊,請參閱使用 Oracle 做為 AWS DMS 的來源時的額外連線屬性OracleSettings,以及故障診斷在 AWS DMS 文件中。 

 

Attachments

attachment.zip