使用 將 Oracle 分割資料表遷移至 PostgreSQL AWS DMS - AWS 方案指引

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

使用 將 Oracle 分割資料表遷移至 PostgreSQL AWS DMS

由 Saurav Mishra (AWS) 和 Eduardo Valentim (AWS) 建立

環境:PoC 或試行

來源:Oracle 資料庫

目標:PostgreSQL 9.0

R 類型:重新架構

工作負載:Oracle

技術:遷移;資料庫;儲存和備份

AWS 服務: AWS DMS

Summary

此模式說明如何使用不支援原生分割的 AWS Database Migration Service (AWS DMS),加速將分割的資料表從 Oracle 載入 PostgreSQL。目標 PostgreSQL 資料庫可以安裝在 Amazon Elastic Compute Cloud (Amazon EC2) 上,也可以是 PostgreSQL 的 Amazon Relational Database Service (Amazon RDS) 或 Amazon Aurora Postgre SQL-Compatible Edition 資料庫執行個體。 

上傳分割的資料表包含下列步驟:

  1. 建立類似於 Oracle 分割區資料表的父資料表,但不包含任何分割區。

  2. 建立子資料表,其將從您在步驟 1 中建立的父資料表繼承。

  3. 建立程序函數和觸發程序,以處理父資料表中的插入。

但是,由於每個插入都會觸發觸發,因此使用 的初始負載AWSDMS可能會非常慢。

為了加速從 Oracle 到 PostgreSQL 9.0 的初始載入,此模式會為每個分割區建立個別AWSDMS任務,並載入對應的子資料表。然後,您可以在切換期間建立觸發程序。 

PostgreSQL 第 10 版支援原生分割區。不過,在某些情況下,您可能會決定使用繼承的分割區。如需詳細資訊,請參閱其他資訊一節。

先決條件和限制

先決條件

  • 作用中AWS帳戶

  • 具有分割資料表的來源 Oracle 資料庫

  • PostgreSQL 資料庫位於 AWS

產品版本

  • PostgreSQL 9.0

架構

來源技術堆疊

  • Oracle 中的分割資料表

目標技術堆疊

  • PostgreSQL 中的分割資料表 (在 Amazon EC2、Amazon RDS for Postgre SQL或 Aurora Postgre 上SQL)

目標架構

Oracle 中的分割資料表資料會移至每個分割區AWSDMS的任務,然後移至 Postgre SQL。

工具

史詩

任務描述所需的技能

在 Postgre 中建立資料表SQL。

在 PostgreSQL 中建立父資料表和對應的子資料表,其中包含分割區所需的檢查條件。

DBA

為每個分割區建立AWSDMS任務。

在AWSDMS任務中包含分割區的篩選條件。將分割區對應至對應的 PostgreSQL 子資料表。

DBA

使用全負載執行AWSDMS任務,並變更資料擷取 (CDC)。

請確定 StopTaskCachedChangesApplied 參數設定為 ,trueStopTaskCachedChangesNotApplied 參數設定為 false

DBA
任務描述所需的技能

停止複寫任務。

在您停止任務之前,請確認來源和目的地是同步的。

DBA

在父資料表上建立觸發程序。

由於父資料表會收到所有插入和更新命令,因此請建立觸發程序,根據分割條件將這些命令路由至對應的子資料表。

DBA

相關資源

其他資訊

雖然 PostgreSQL 第 10 版支援原生分割區,但您可能會決定將繼承的分割區用於下列使用案例:

  • 分割會強制執行規則,即所有分割區都必須具有與父分割區相同的資料欄集,但資料表繼承支援具有額外資料欄的子項。

  • 資料表繼承支援多個繼承。

  • 宣告式分割僅支援清單和範圍分割。使用資料表繼承,您可以視需要分割資料。不過,如果限制排除無法有效刪除分割區,則查詢效能會受到影響。

  • 某些操作在使用宣告式分割時,比使用資料表繼承時需要更強的鎖定。例如,在分割資料表中新增或移除分割區時,需要在父資料表上ACCESS EXCLUSIVE鎖定,而SHARE UPDATE EXCLUSIVE鎖定足以進行一般繼承。

使用個別任務分割區時,如果有任何AWSDMS驗證問題,您也可以重新載入分割區。為了提升效能和複寫控制,請在個別複寫執行個體上執行任務。