View a markdown version of this page

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

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

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

Saurav Mishra 和 Eduardo Valentim,Amazon Web Services

總結

此模式說明如何使用不支援原生分割的 AWS Database Migration Service (AWS DMS),加速將分割的資料表從 Oracle 載入 PostgreSQL。目標 PostgreSQL 資料庫可以安裝在 Amazon Elastic Compute Cloud (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 任務,並載入對應的子資料表。然後,您可以在切換期間建立觸發。 

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

先決條件和限制

先決條件

  • 作用中的 AWS 帳戶

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

  • AWS 上的 PostgreSQL 資料庫

產品版本

  • PostgreSQL 9.0

Architecture

來源技術堆疊

  • Oracle 中的分割資料表

目標技術堆疊

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

目標架構

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

工具

史詩

任務Description所需的技能

在 PostgreSQL 中建立資料表。

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

DBA

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

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

DBA

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

請確定 StopTaskCachedChangesApplied 參數設定為 ,true且 StopTaskCachedChangesNotApplied 參數設定為 false。

DBA
任務Description所需的技能

停止複寫任務。

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

DBA

在父資料表上建立觸發。

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

DBA

相關資源

其他資訊

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

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

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

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

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

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