AWS DMS を使用して Amazon RDS for Oracle を Amazon RDS for PostgreSQL に移行します - AWS 規範ガイダンス

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

AWS DMS を使用して Amazon RDS for Oracle を Amazon RDS for PostgreSQL に移行します

作成者:Pinesh Singal (AWS)

環境:PoC またはパイロット

ソース: Amazon RDS for Oracle

ターゲット:Amazon RDS PostgreSQL

Rタイプ: リアーキテクト

ワークロード:Oracle、オープンソース

テクノロジー:移行、セキュリティ、ID、コンプライアンス、データベース

AWS サービス: AWS DMS、Amazon RDS

[概要]

このパターンは、Amazon Relational Database Service (Amazon RDS) を、Amazon Amazon Web Services (AWS) クラウド上の Amazon RDS for PostgreSQL データベースに移行する際のガイダンスを提供します。データベース間の接続を暗号化するために、このパターンでは Amazon RDS と AWS Database Migration Service (AWS DMS) の認証局 (CA) と SSL モードを使用します。

このパターンは、トランザクション数が多い数テラバイトの Oracle ソースデータベースに対して、ダウンタイムをほとんどまたはまったく発生させないオンライン移行戦略を示しています。データセキュリティのため、このパターンではデータ転送時に SSL を使用します。

このパターンでは、AWS Schema Conversion Tool (AWS SCT) を使用して Amazon RDS for Oracle データベーススキーマを Amazon RDS for PostgreSQL スキーマに変換します。このパターンでは、AWS SCT を使用してデータを Amazon RDS for Oracle から Amazon RDS for PostgreSQL に移行します。

前提条件と制限

前提条件

  • アクティブなAWS アカウント 

  • rds-ca-2019 のみで構成された Amazon RDS データベース認証局 (CA) (rds-ca-2015 証明書は 2020 年 3 月 5 日に有効期限が切れました)

  • AWS SCT

  • AWS DMS

  • pgAdmin

  • SQL ツール (SQL Developer や SQL*Plus など)

制約事項

  • Amazon RDS for Oracle — 最小要件は、エンタープライズエディションおよびスタンダード 2 エディションの Oracle バージョン 19c です。

  • Amazon RDS for PostgreSQL — 最小要件は PostgreSQL バージョン 12 以降 (バージョン 9.x 以降用) です。

製品バージョン

  • Amazon RDS for Oracle DB インスタンスバージョン 12.1.0.2 以降

  • Amazon RDS for PostgreSQL データベースバージョン 11.5 インスタンス

アーキテクチャ

ソーステクノロジースタック

  • バージョン 12.1.0.2.v18 の Amazon RDS for Oracle データベースインスタンス。

ターゲットテクノロジースタック

  • AWS DMS

  • バージョン 11.5 以降のAmazon RDS for PostgreSQL データベースインスタンス

ターゲットアーキテクチャ

次の図は、Oracle (ソース) データベースと PostgreSQL (ターゲット) データベース間のデータ移行アーキテクチャのアーキテクチャを示しています。このアーキテクチャには以下が含まれます。

  • 仮想プライベートクラウド (VPC)

  • アベイラビリティゾーン

  • プライベートサブネット

  • Amazon RDS for Oracle のデータベース

  • AWS DMS レプリケーションインスタンスを作成します。

  • RDS for PostgreSQL データベース

ソースデータベースとターゲットデータベースの接続を暗号化するには、Amazon RDS と AWS DMS で CA と SSL モードを有効にする必要があります。

プライベートサブネットでは、データは Amazon RDS for Oracleと AWS DMS の間、および Amazon RDS for PostgreSQL の間で移動します。

ツール

AWS サービス

  • AWS Database Migration Service (AWS DMS)」 を使用して、データストアを AWS クラウドへ、またはクラウドセットアップとオンプレミスセットアップの組み合わせの間に移行します。

  • OracleのAmazon Relational Database Service (Amazon RDS)」 によって、AWS クラウドで Oracleリレーショナルデータベースをセットアップ、運用、スケーリングができます。

  • Amazon Relational Database Service (Amazon RDS)」 を使用して、AWS クラウドでの PostgreSQL リレーショナルデータベースをセットアップ、運用、スケーリングできます。

  • AWS Schema Conversion Tool (AWS SCT)」 は、ソースデータベーススキーマとカスタムコードの大部分をターゲットデータベースと互換性のある形式に自動的に変換することで、異種データベース移行をサポートします。

その他のサービス

  • pgAdmin」 は PostgreSQL 用のオープンソース管理ツールです。データベースオブジェクトの作成、管理、使用を支援するグラフィカルインターフェイスを提供します。

エピック

タスク説明必要なスキル

Oracle データベースインスタンスを作成します。

AWS アカウントにサインインし、AWS マネジメントコンソールを開いて Amazon RDS コンソールに移動します。コンソールで データベースの作成を選択し、Oracle を選択します。

AWS 全般、DBA

セキュリティグループを設定します。

インバウンドおよびアウトバウンドのセキュリティグループを設定します。

AWS 全般

オプショングループを作成します。

Amazon RDS for Oracle データベースと同じ VPC およびセキュリティグループにオプショングループを作成します。オプションには SSL を選択します。ポートには 2484 (SSL 接続用) を選択します。

AWS 全般

オプション設定を行います。

以下の設定を使用します。

  • SQLNET.CIPHER_SUITE: SSL_RSA_WITH_AES_256_CBC_SHA

  • SQLNET.SSL_VERSION: 1.2 or 1.0

AWS 全般

RDS for Oracle DB インスタンスを変更します。

CA 証明書を rds-ca-2019 として設定します。オプショングループ で、以前に作成したオプショングループを添付します。

AWS 全般、DBA

RDS for Oracle DB インスタンスが使用可能であることを確認します。

Amazon RDS for Oracle データベースインスタンスが稼働中であり、データベーススキーマにアクセスできることを確認します。

RDS for Oracle DB に接続するには、sqlplus コマンドラインからコマンドを使用します。

$ sqlplus orcl/****@myoracledb.cokmvis0v46q.us-east-1.rds.amazonaws.com:1521/ORCL SQL*Plus: Release 12.1.0.2.0 Production on Tue Oct 15 18:11:07 2019 Copyright (c) 1982, 2016, Oracle. All rights reserved. Last Successful login time: Mon Dec 16 2019 23:17:31 +05:30 Connected to: Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options SQL>
DBA

RDS for Oracle データベースにオブジェクトとデータを作成します。

オブジェクトを作成し、スキーマにデータを挿入します。

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

RDS for PostgreSQL データベースを作成します。

Amazon RDS コンソールのデータベースの作成ページで、PostgreSQL を選択して Amazon RDS for PostgreSQL データベースインスタンスを作成します。

AWS 全般、DBA

セキュリティグループを設定します。

インバウンドおよびアウトバウンドのセキュリティグループを設定します。

AWS 全般

パラメータグループを作成します。

PostgreSQL バージョン 11.x を使用している場合は、パラメータグループを作成して SSL パラメータを設定します。PostgreSQL バージョン 12 では、SSL パラメータグループはデフォルトで有効になっています。

AWS 全般

パラメータの編集。

rds.force_ssl パラメータを 1 (オン)に変更します。

デフォルトでは、 ssl パラメータが 1 (オン)です。rds.force_ssl パラメータを 1 に設定すると、すべての接続が SSL モードでのみ接続するように強制されます。

AWS 全般

RDS for PostgreSQL DB インスタンスを更新します。

CA 証明書を rds-ca-2019 として設定します。PostgreSQL のバージョンに応じて、デフォルトのパラメータグループまたは以前に作成したパラメータグループを添付します。

AWS 全般、DBA

RDS for PostgreSQL DB インスタンスが使用可能であることを確認します。

Amazon RDS for PostgreSQL データベースが稼働していることを確認します。

この psql コマンドは、コマンドラインから sslmode set を使用して SSL 接続を確立します。

1 つの方法は、sslmode=1 パラメーターグループに設定し、psql コマンドに sslmode パラメーターを含めずに接続を使用することです。

次の出力は、SSL 接続が確立されたことを示しています。

$ psql -h mypgdbinstance.cokmvis0v46q.us-east-1.rds.amazonaws.com -p 5432 "dbname=pgdb user=pguser" Password for user pguser: psql (11.3, server 11.5) SSL connection (protocol: TLSv1.2, cipher: ECDHE-RSA-AES256-GCM-SHA384, bits: 256, compression: off) Type "help" for help. pgdb=>

2 つ目の方法は、sslmode=1 パラメータグループに設定し、その sslmode パラメータを psql コマンドに含めることです。

次の出力は、SSL 接続が確立されたことを示しています。

$ psql -h mypgdbinstance.cokmvis0v46q.us-east-1.rds.amazonaws.com -p 5432 "dbname=pgdb user=pguser sslmode=require" Password for user pguser: psql (11.3, server 11.5) SSL connection (protocol: TLSv1.2, cipher: ECDHE-RSA-AES256-GCM-SHA384, bits: 256, compression: off) Type "help" for help. pgdb=>
DBA
タスク説明必要なスキル

AWS SCT をインストールします。

AWS SCT アプリケーションの最新バージョンをインストールします。

AWS 全般

JDBC ドライバーを使用して AWS SCT を設定します。

Oracle (「ojdbc8.jar」) と PostgreSQL (postgresql-42.2.5.jar) 用の Java データベース接続 (JDBC) ドライバーをダウンロードしてください。

AWS SCT でドライバを設定するには、設定、グローバル設定、ドライバを選択します。

AWS 全般

AWS SCT プロジェクトを作成します。

Oracle をソース DB エンジンとして、Amazon RDS for PostgreSQL をターゲット DB エンジンとして使用して、AWS SCT プロジェクトとレポートを作成します。

  1. 接続の詳細を指定して、ソース Oracle データベースとターゲット Amazon RDS for PostgreSQL データベースへの接続をテストします。

    ソース Oracle データベースには、以下の権限または権限が必要です。

    • CONNECT

    • SELECT_CATALOG_ROLE

    • SELECT ANY DICTIONARY

    • SELECT on SYS.USER$ TO <sct_user>

    詳細については、「AWS SCTのソースとしての Oracle データベースの使用」 を参照してください。

    AWS SCT が移行レポートを開始する前に、ソース接続とターゲット接続の両方に成功する必要があります。

  2. レポートが表示されたら、変換するスキーマを入力し、Finish を選択します。

AWS 全般

データベースオブジェクトを検証します。

  1. スキーマのロードを選択します。

    AWS SCT には、エラーのあるオブジェクトを含め、ソースオブジェクトと変換されたターゲットオブジェクトが表示されます。ターゲットデータベース上の不正なオブジェクトをすべて更新します。

  2. エラーを確認し、手動操作でクリアします。

  3. すべてのエラーがクリアされたら、スキーマの読み込みをもう一度選択します。

  4. データベースに適用を選択します。

  5. pgAdmin または PostgreSQL DB Connect をサポートする任意のツールに接続し、スキーマとオブジェクトを確認します。

AWS 全般、DBA
タスク説明必要なスキル

レプリケーションインスタンスを作成します。

  1. アカウントにサインインして AWS マネジメントコンソールを開いて AWS DMS コンソールに移動します。

  2. VPC、セキュリティグループ、アベイラビリティーゾーン、その他の接続属性の有効な設定を使用してレプリケーションインスタンスを作成します。

AWS 全般

証明書をインポートします。

  1. rds-ca-2019-root.pem」 証明書をダウンロードしてください。

  2. 証明書ページで、証明書を rds-ca-2019-root としてインポートします。

AWS 全般

ソースエンドポイントを作成します。

  1. RDS DB インスタンスを選択を選択し、作成した RDS for Oracle DB インスタンスを選択して、Amazon RDS for Oracle のソースエンドポイントを作成します。エンドポイント設定の詳細が自動的に入力されます。

  2. アクセス情報を手動で提供を選択します。ポートには、必ず 2484 と入力してください。

  3. セキュア・ソケット・レイヤー (SSL) モードで、verify-ca , を選択し、前に作成した CA 証明書を選択します。

  4. エンドポイント設定で、サイズなしで NUMBER データ型をサポートする接続属性 NumberDataTypeScale=-2 を追加します。

詳細については、「AWS データベース移行サービスに対して、 Oracle のデータベースをソースとして使用する」 を参照してください。

AWS 全般

ターゲットエンドポイントを作成します。

  1. RDS DB インスタンスを選択を選択することで、Amazon RDS for PostgreSQL のターゲットエンドポイントを作成して、PostgreSQL DB インスタンスの RDSを選択します。エンドポイント設定の詳細が自動的に入力されます。

  2. アクセス情報を手動で提供を選択します。ポートには、必ず 2484 と入力してください。

詳細については、「AWS データベース移行サービスのターゲットとして PostgreSQL データベースを使用する」 を参照してください。

AWS 全般

エンドポイントをテストします。

  1. ソースとターゲットのエンドポイントをテストして、両方が正常に動作し、使用可能であることを確認します。

  2. テストに失敗した場合は、セキュリティグループのインバウンドルールが有効であることを確認します。

AWS 全般

移行タスクを作成します。

フルロードと変更データキャプチャ (CDC) またはデータ検証用の移行タスクを作成するには、次の手順を実行します。

  1. データベース移行タスクを作成するには、レプリケーションインスタンス、ソースデータベースエンドポイント、ターゲットデータベースエンドポイントを選択します。移行タイプを次のいずれかに指定します。

    • 既存データを移行 (全ロード)

    • データ変更のみをレプリケートする

    • 既存のデータを移行し、継続的変更をレプリケーション(フルロードと CDC )

  2. テーブルマッピングでは、GUI または JSON 形式の選択ルールと変換ルールを設定できます。

    • 選択ルールで、スキーマを選択し、テーブル名を入力し、設定するアクション (「含む」または「除外」) を選択します。たとえば、「スキーマ ORCL」、「テーブル名%」、「アクションを含む」などです。

    • 変換ルールで、以下の一つの作業を実施します。

      • スキーマを選択し、アクション (大文字と小文字、接頭辞、接尾辞) を選択します。たとえば、「ターゲットスキーマ ORCL」、「アクションは小文字にする」などです。

      • スキーマを選択し、テーブル名を入力して、アクション (大文字と小文字、接頭辞、接尾辞) を選択します。たとえば、ターゲットスキーマ ORCL、テーブル % 、アクションを小文字にするなどです。

  3. Amazon CloudWatch Logs モニタリングを有効にします。

  4. マッピングルールには、次の JSON コードを追加します。

    { "rules": [ { "rule-type": "transformation", "rule-id": "1", "rule-name": "1", "rule-target": "table", "object-locator": { "schema-name": "%", "table-name": "%" }, "rule-action": "convert-lowercase", "value": null, "old-value": null }, { "rule-type": "transformation", "rule-id": "2", "rule-name": "2", "rule-target": "schema", "object-locator": { "schema-name": "ORCL", "table-name": "%" }, "rule-action": "convert-lowercase", "value": null, "old-value": null }, { "rule-type": "selection", "rule-id": "3", "rule-name": "3", "object-locator": { "schema-name": "ORCL", "table-name": "DEPT" }, "rule-action": "include", "filters": [] } ] }
AWS 全般

本番稼働を計画する。

アプリケーション所有者などの利害関係者とダウンタイムを確認し、本番システムで AWS DMS を実行してください。

移行リード

移行タスクを実行します。

  1. Ready ステータスの AWS DMS タスクを開始し、Amazon の移行タスクログにエラーがない CloudWatch かどうかをモニタリングします。

    移行タイプとして 既存のデータを移行し、継続的な変更を複製するを選択し、ステータスが 継続的なレプリケーションのロード完了の場合、CDC データ移行による全ロードが完了し、検証が進行中です。

  2. 移行を開始したら、 で追加の SSL 接続情報を取得できます CloudWatch。Oracle の場合、 は次の接続文字列 CloudWatch を表示します。

    2019-12-17T09:15:11 [SOURCE_UNLOAD ]I: Connecting to Oracle: Beginning session (oracle_endpoint_conn.c:834)

    PostgreSQL 接続文字列は、次の例のようになります。

    2019-12-17T09:15:11 [TARGET_LOAD ]I: Going to connect to ODBC connection string: PROTOCOL=7.4-0;DRIVER={PostgreSQL};SERVER=mypgdbinstance.cokmvis0v46q.us-east-1.rds.amazonaws.com;DATABASE=pgdb;PORT=5432;sslmode=require;UID=pguser; (odbc_endpoint_imp.c:2218)

AWS 全般

データを検証します。

移行タスクの結果と、移行元の Oracle データベースと移行先の PostgreSQL データベースのデータを確認します。

  1. pgAdmin に接続し、スキーマ ORCL を使用して PostgreSQL データベース内のデータを確認します。

  2. CDC の場合は、ソース Oracle データベースにデータを挿入または更新して、進行中の変更を確認します。

DBA

移行タスクを停止します。

データ検証が正常に完了したら、移行タスクを停止します。

AWS 全般
タスク説明必要なスキル

AWS DMS タスクを削除します。

  1. AWS DMS コンソールでデータベース移行タスクに移動し、進行中または実行中の AWS DMS タスクを停止します。

  2. タスク、または複数のタスクを選択し、アクションを選択して、削除を選択します。

AWS 全般

AWS DMS エンドポイントを削除します。

作成したソースエンドポイントとターゲットエンドポイントを選択し、[Actions] を選択し、[Delete] を選択します。

AWS 全般

AWS DMS レプリケーションインスタンスを削除します。

レプリケーションインスタンスを選択し、Actions を選択し、Delete を選択します。

AWS 全般

PostgreSQL データベースを削除します。

  1. Amazon RDS コンソールで、データベースを選択します。

  2. 作成した PostgreSQL データベースインスタンスを選択し、アクションを選択してから削除を選択します。

AWS 全般

Oracle データベースを削除します。

Amazon RDS コンソールで Oracle データベースインスタンスを選択し、アクションを選択し、削除を選択します。

AWS 全般

トラブルシューティング

問題ソリューション

AWS SCT のソースとターゲットのテスト接続が失敗しています。

受信トラフィックを受け入れるように JDBC ドライバーバージョンと VPC セキュリティグループのインバウンドルールを設定します。

ソースまエンドポイントのテスト実行が失敗しました。

エンドポイントの設定と、レプリケーションインスタンスが使用可能かどうかを確認します。

AWS DMS タスクの全ロード実行が失敗します。

ソースデータベースとターゲットデータベースに、一致しているデータ型とサイズがあるかを確認します。

AWS DMS 検証移行タスクがエラーを返します。

  1. テーブルにプライマリキーがあるかどうかを確認します。プライマリキーのないテーブルは検証されません。

  2. テーブルには、プライマリキーがありますが、エラーが返された場合、ソースエンドポイントの追加の接続属性を確認します。追加の接続属性は、テーブル内のデータに基づいて動的にサイズなしで NUMBER データ型をサポートするために numberDataTypeScale=-2 を持っている必要があります。

関連リソース

データベース

SSL DB 接続

AWS SCT

AWS DMS

添付ファイル

このドキュメントに関連する追加コンテンツにアクセスするには、次のファイルを解凍してください。「attachment.zip