を使用して 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

[概要]

このパターンでは、ネイティブパーティショニングをサポートしていない AWS Database Migration Service (AWSDMS) を使用して、Oracle から PostgreSQL へのパーティショニングされたテーブルのロードを高速化する方法について説明します。ターゲット PostgreSQL データベースは Amazon Elastic Compute Cloud (Amazon EC2) にインストールすることも、PostgreSQL 用の Amazon Relational Database Service (Amazon RDS) または Amazon Aurora Postgre SQL互換エディション DB インスタンスにすることもできます。 

分割テーブルをアップロードするには、次の手順が含まれます。

  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。

ツール

  • AWS Database Migration Service (AWS DMS) は、データストアをAWSクラウドに移行する際や、クラウドとオンプレミスのセットアップの組み合わせ間で移行する際に役立ちます。

エピック

タスク説明必要なスキル

Postgre でテーブルを作成しますSQL。

パーティションに必要なチェック条件を使用して、PostgreSQL で親テーブルと対応する子テーブルを作成します。

DBA

パーティションごとにAWSDMSタスクを作成します。

AWS DMS タスクにパーティションのフィルター条件を含めます。パーティションを対応する PostgreSQL 子テーブルにマッピングします。

DBA

フルロードを使用してAWSDMSタスクを実行し、データキャプチャを変更します (CDC)。

StopTaskCachedChangesApplied パラメータが true に設定され、StopTaskCachedChangesNotApplied パラメータが false に設定されていることを確認します。

DBA
タスク説明必要なスキル

レプリケーションタスクを停止します。

タスクを停止する前に、ソースとターゲットが同期されていることを確認します。

DBA

親テーブルにトリガーを作成します。

親テーブルはすべての挿入コマンドと更新コマンドを受け取るため、パーティショニング条件に基づいてこれらのコマンドをそれぞれの子テーブルにルーティングするトリガーを作成します。

DBA

関連リソース

追加情報

PostgreSQL バージョン 10 ではネイティブパーティショニングがサポートされていますが、次のユースケースでは継承されたパーティショニングを使用する場合があります。

  • パーティショニングでは、すべてのパーティションが親パーティションと同じ列セットを持つ必要があるというルールが適用されますが、テーブル継承では子が追加の列を持つこともサポートされます。

  • テーブル継承は多重継承をサポートします。

  • 宣言型パーティショニングは、リストパーティショニングとレンジパーティショニングのみをサポートします。テーブル継承では、データを必要に応じて分割できます。ただし、制約除外によってパーティションを効果的にプルーニングできなければ、クエリのパフォーマンスが低下します。

  • 一部の操作では、宣言型パーティショニングを使用する方が、テーブル継承を使用する場合よりも強力なロックが必要になります。たとえば、ACCESS EXCLUSIVE パーティション化されたテーブルにパーティションを追加または削除するには親テーブルをロックする必要がありますが、SHARE UPDATE EXCLUSIVE 通常の継承にはロックで十分です。

個別のジョブパーティションを使用する場合、AWSDMS検証に問題がある場合はパーティションを再ロードすることもできます。パフォーマンスとレプリケーション制御を向上させるには、個別のレプリケーションインスタンスでタスクを実行します。