使用 AWS DMS 將甲骨文分區資料表遷移到 PostgreSQL - AWS 方案指引

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

使用 AWS DMS 將甲骨文分區資料表遷移到 PostgreSQL

創建者:索拉夫密什拉(AWS)和愛德華多·瓦倫蒂姆(AWS)

環境:PoC 或試點

來源:甲骨文數據庫

目標:PostgreSQL

R 型:重新建築

工作量:甲骨文

技術:移轉、資料庫、儲存與備份

AWS 服務:AWS DMS

Summary

此模式說明如何使用不支援原生分割的 AWS Database Migration Service (AWS DMS),加快將分區資料表從 Oracle 載入 PostgreSQL 的速度。目標 PostgreSQL 資料庫可以安裝在亞馬遜彈性運算雲端 (Amazon EC2) 上,也可以是適用於 PostgreSQL 的 Amazon Relational Database Service 服務 (Amazon RDS) 或與 Amazon Aurora PostgreSQL 相容的版本資料庫執行個體。 

上傳分區資料表包括下列步驟:

  1. 建立類似 Oracle 分割區表格的父項表格,但不要包含任何分割區。

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

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

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

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

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

先決條件和限制

先決條件

  • 有效的 AWS 帳戶

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

  • AWS PostgreSQL 資料庫

產品版本

  • PostgreSQL

架構

源, 技術, 堆棧

  • 甲骨文中的分區資料表

目標技術堆疊

  • PostgreSQL 中的分區資料表 (在亞馬 Amazon EC2、亞馬遜 RDS 版或 Aurora)

目標架構

Oracle 中的分區資料表資料會移至每個分割區的 AWS DMS 任務,然後移至 PostgreSQL。

工具

史诗

任務描述所需技能

在 PostgreSQL 中創建表。

使用分區所需的檢查條件在 PostgreSQL 中創建父表和對應的子表。

DBA

為每個分割區建立 AWS DMS 任務。

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

DBA

使用全負載和變更資料擷取 (CDC) 執行 AWS DMS 任務。

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

DBA
任務描述所需技能

停止複寫工作。

停止工作之前,請確認來源和目的地是否同步。

DBA

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

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

DBA

相關資源

其他資訊

雖然 PostgreSQL 版本 10 支援原生磁碟分割,但您可能會決定在下列使用案例中使用繼承的磁碟分割:

  • 分區強制執行一項規則,即所有分區必須具有與父級相同的一組列,但是表繼承支持具有額外列的子級。

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

  • 宣告式磁碟分割僅支援清單和範圍分割。使用表繼承,您可以根據需要劃分數據。但是,如果條件約束排除無法有效地修剪分割區,則查詢效能將受到影響。

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

當您使用不同的任務分割區時,如果發生任何 AWS DMS 驗證問題,也可以重新載入分區。為了獲得更好的效能和複寫控制,請在不同的複寫執行個體上執行