Database Migration Service を使用して Oracle ワークロードを AlloyDB for PostgreSQL に移行する

このクイックスタートでは、Database Migration Service を使用して Oracle ワークロードを AlloyDB for PostgreSQL に移行する方法について説明します。このクイックスタートで作成されるリソースにかかる費用は、クリーンアップを含む手順を適切なタイミングで完了した場合、通常 1 ドル(USD)未満です。

始める前に

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Make sure that billing is enabled for your Google Cloud project.

  4. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  5. Make sure that billing is enabled for your Google Cloud project.

  6. Enable the Database Migration Service API.

    Enable the API

  7. ユーザー アカウントにデータベース移行管理者のロールが割り当てられていることを確認します。

    IAM ページに移動

要件

Database Migration Service は、さまざまな移行元のデータベース オプション、移行先のデータベース オプション、接続方法を提供します。さまざまな送信元と宛先は、一部の接続方法でのほうが、他の接続方法よりもよく機能します。

このクイックスタートでは、次の前提条件を満たしていることを前提としています。

  • ネットワークを構成して受信ファイアウォール ルールを追加できる環境では、スタンドアロンの Oracle データベースを使用します。移行元データベースは、オンプレミスまたはクラウド プロバイダにできます。お客様の具体的な環境を把握できないため、ネットワーキング構成に関する詳細なステップは提供できません。

  • LogMiner ユーティリティを使用して、Oracle ワークロードを移行先の AlloyDB for PostgreSQL データベースに移行する。

  • プライベート IP 接続方法を使用します。このタイプの接続では、AlloyDB for PostgreSQL の移行先データベースのプライベート接続構成を作成する必要があります。

接続プロファイルの作成

接続プロファイルを作成することで、ソース データベースと宛先データベースに関する情報を含むレコードを作成します。Database Migration Service は、接続プロファイルの情報を使用して、移行元 Oracle データベースから移行先の AlloyDB for PostgreSQL データベース インスタンスにデータを移行します。

このセクションでは、以下に対する接続プロファイルを作成する方法を学習します。

  • 移行元の Oracle データベース
  • 移行先の AlloyDB for PostgreSQL データベース

Oracle 接続プロファイルを作成する

  1. Google Cloud コンソールで、Database Migration Service の [接続プロファイル] ページに移動します。

    Database Migration Service の [接続プロファイル] ページに移動

  2. [プロファイルを作成] をクリックします。

  3. [Create a connection profile] ページの [Profile role] リストから、[Source] を選択します。

  4. [データベース エンジン] リストから [Oracle] を選択します。

  5. 次の情報を入力します。

    1. [接続プロファイル名] フィールドに、移行元 Oracle データベースの接続プロファイルの名前(My Oracle Connection Profile など)を入力します。

    2. 自動生成された接続プロファイル ID を保持します。

    3. 接続プロファイルが保存される [リージョン] を選択します。

    4. ソース Oracle データベースにアクセスするためのホスト名または IP アドレス(ドメインまたは IP)とポートを入力します。(デフォルトの Oracle ポートは 1521 です)。

    5. 移行元データベースへの認証用に、ユーザー名パスワードを入力します。

    6. [サービス名] フィールドに、ソースの Oracle データベースを確実に保護し、モニタリングするサービスを入力します。Oracle データベースの場合、データベース サービスは通常 ORCL です。

  6. [続行] をクリックします。

  7. [接続を保護する] セクションで、[続行] をクリックします。

  8. [接続方法] リストから、ネットワーク接続方法を選択します。このメソッドでは、Database Migration Service が移行元の Oracle データベースに接続する方法が定義されます。

    このクイックスタートでは、ネットワーク方式として [IP 許可リスト] を選択します。

  9. [テストを実行] をクリックして、Database Migration Service がソースと通信できることを確認します。

    テストに失敗した場合は、プロセスのどの部分に問題があったかが示されます。必要な変更を行った後、[接続プロファイルを作成する] ページで再度テストできます。

    問題のあるフローの部分に移動して問題を修正し、再テストします。

  10. [作成] をクリックします。

宛先接続プロファイルを作成する

  1. Google Cloud コンソールで、Database Migration Service の [接続プロファイル] ページに移動します。

    Database Migration Service の [接続プロファイル] ページに移動

  2. [プロファイルの作成] をクリックします。

  3. [接続プロファイルの作成] ページの [プロファイルのロール] リストから、[宛先] を選択します。

  4. [データベース エンジン] リストから [AlloyDB for PostgreSQL] を選択します。

  5. 次の情報を入力します。

    1. [接続プロファイル名] フィールドに、移行先の AlloyDB for PostgreSQL データベースの接続プロファイルの名前(My AlloyDB for PostgreSQL Connection Profile など)を入力します。

    2. 自動生成された接続プロファイル ID を保持します。

    3. 接続プロファイルが保存される [リージョン] を選択します。

    4. 移行先データベースとして使用する AlloyDB for PostgreSQL クラスタを選択します。

    5. 宛先データベースにアクセスするためのホスト名または IP アドレス(ドメインまたは IP)とポートを入力します。(AlloyDB for PostgreSQL のデフォルト ポートは 5432 です)。

    6. 移行先データベースへの認証用に、ユーザー名パスワードを入力します。

  6. [続行] をクリックします。

  7. [接続を保護する] セクションで、[続行] をクリックします。

  8. [接続方法] メニューで、[プライベート IP] 接続方法を選択します。

    接続方法は、Database Migration Service が移行先の AlloyDB for PostgreSQL データベースに接続する方法です。プライベート IP を使用するには、まず プライベート接続構成を作成する必要があります。

  9. [テストを実行] をクリックして、Database Migration Service が移行先データベースと通信できることを確認します。

    テストに失敗した場合は、プロセスのどの部分に問題があったかが示されます。必要な変更を行った後、[接続プロファイルを作成する] ページで再度テストできます。

    問題のあるフローの部分に移動して問題を修正し、再テストします。

  10. [作成] をクリックします。

コンバージョン ワークスペースを作成する

コンバージョン ワークスペースでは、移行元のデータベースのスキーマとオブジェクトを、移行先のデータベースと互換性のある形式に変換できます。この変換により、Database Migration Service は移行元と移行先のデータベース間でデータを移行できます。

コンバージョン ワークスペースを作成するには、次の操作を行います。

  • コンバージョン ワークスペースの設定を定義します。
  • ソース データベースに接続し、スキーマ情報を Database Migration Service に pull します。
  • 以下の方法で、自動変換を実行し、必要に応じて調整します。

    • コンバージョン ワークスペース エディタ - コンバージョンに使用される SQL を変更できるライブ エディタ スペース
    • 追加のコンバージョン マッピングを提供する Ora2Pg 構成ファイル
  • 変換されたスキーマを移行先データベースに適用する: Database Migration Service は、生成された SQL を使用して移行先データベースに必要なエンティティをすべて作成し、移行データをデータベースに正しく読み込むことができます。

コンバージョン ワークスペースの設定を定義する

  1. Google Cloud コンソールで、Database Migration Service の [変換ワークスペース] ページに移動します。

    Database Migration Service コンバージョン ワークスペース ページに移動

  2. [Create workspace] をクリックします。

  3. 次の情報を入力します。

    1. [コンバージョン ワークスペース名] フィールドに、コンバージョン ワークスペースの名前(My Conversion Workspace など)を入力します。

    2. 自動生成されたコンバージョン ワークスペース ID を保持します。

    3. コンバージョン ワークスペースが保存されるリージョンを選択します。

    4. [ソース データベース エンジン] リストに [Oracle] が自動的に入力されます。

    5. [移行先データベース エンジン] リストから [AlloyDB for PostgreSQL] を選択します。

  4. コンバージョン ワークスペースに環境を準備する方法が反映されるように、自動的に生成される必須の前提条件を確認します。これらの前提条件には、次のような方法が含まれます。

  5. [Create workspace and continue] をクリックします。

ソースに接続してオブジェクトを変換する

  1. [ソース接続プロファイル] リストを開き、作成した接続プロファイルを選択します。

  2. [テストを実行] をクリックして、Database Migration Service がソースと通信できることを確認します。

    テストに失敗した場合は、プロセスのどの部分に問題があったかが示されます。必要な変更を行った後、再度テストできます。

    問題のあるフローの部分に移動して問題を修正し、再度テストを行います。

  3. [スキーマを pull して続行] をクリックします。

    Database Migration Service は、移行元データベースへの接続を開始してスキーマ情報をダウンロードします。このオペレーションには、ネットワーク接続やデータベースのサイズなどの要因によっては数分かかることがあります。

    Database Migration Service がスキーマ情報の取得を完了すると、[オブジェクトを選択して変換] セクションが開きます。

  4. スキーマ ツリービューを使用して、Database Migration Service で移行先データベースの SQL エンジンと互換性のあるスキーマに変換するエンティティをすべて選択します。

  5. [変換して続行] をクリックします。

    Database Migration Service は、コンバージョン ワークスペースを作成し、スキーマ変換を実行します。コンバージョン ワークスペース エディタで、自動生成された SQL をプレビューできるようになりました。

移行先に適用

宛先データベースで使用するスキーマが変換されたら、[宛先に適用] オプションを使用して、生成された SQL ステートメントを宛先データベースで実行します。

  1. [リンク先に適用] をクリックし、次のいずれかのオプションを選択します。

    • テスト(推奨): このオペレーションは、テスト実行を実行して、移行先データベースでスキーマを正常に作成できるかどうかを確認します。
    • 適用: このオペレーションは、変換されたスキーマを移行先データベースに作成しようとします。
  2. [宛先の定義] セクションで、宛先データベースを指す接続プロファイルを選択します。

  3. [定義して続行] をクリックします。

  4. [オブジェクトを確認して移行先に変換を適用する] セクションで、移行先データベースに作成するデータベース エンティティのスキーマを選択します。

  5. [移行先に適用] をクリックします。

移行ジョブの作成

Database Migration Service は、移行ジョブを使用して、移行元のデータベース インスタンスから移行先の AlloyDB for PostgreSQL データベース インスタンスにデータを移行します。

移行ジョブの作成には以下が含まれます。

  • ジョブの設定の定義
  • ソース データベース用に作成した接続プロファイル(ソース接続プロファイル)に関する情報を指定します
  • 宛先データベース用に作成した接続プロファイル(宛先接続プロファイル)に関する情報を指定します。
  • ソース データベースから移行するオブジェクトの構成
  • 移行ジョブをテストして、ジョブに指定した接続情報が有効であることを確認します

移行ジョブの設定を定義する

  1. Google Cloud コンソールで、Database Migration Service の [Migration jobs] ページに移動します。

    Database Migration Service の [移行ジョブ] ページに移動

  2. [移行ジョブを作成する] をクリックします。

  3. [移行ジョブ名] フィールドに、移行ジョブの名前(My Migration Job など)を入力します。

  4. 自動生成された移行ジョブ ID を保持します。

  5. [移行元データベース エンジン] メニューから [Oracle] を選択します。

  6. [移行先データベース エンジン] メニューから [AlloyDB for PostgreSQL] を選択します。

  7. 宛先インスタンスを作成するリージョンを選択します。

  8. 移行ジョブに環境を準備する方法が反映されるように、自動的に生成される必須の前提条件を確認します。これらの前提条件には、移行元データベースの構成方法や移行先の AlloyDB for PostgreSQL データベース インスタンスに接続する方法が含まれます。この手順でこれらの前提条件を完了することをおすすめしますが、移行ジョブをテストまたは開始する前であればいつでも完了できます。これらの前提条件の詳細については、移行元 Oracle データベースの構成をご覧ください。

  9. [保存して次へ] をクリックします。

ソース設定を定義する

[ソースの定義] ページで、次の操作を行います。

  1. [ソース接続プロファイル] リストから、Oracle インスタンスのソース接続プロファイルを選択します。
  2. [保存して次へ] をクリックします。
  3. (省略可)[接続プロファイルをテストする] セクションで、[テストを実行] をクリックして、Database Migration Service がソース インスタンスへのネットワーク接続を確立できるかどうかを確認します。

    接続テストが失敗した場合でも移行ジョブを作成できますが、移行ジョブを実行する前に接続の問題を修正する必要があります。

  4. [ソース構成をカスタマイズする] セクションで、次の設定を行います。
    • [完全ダンプ構成] セクションで、[自動] を選択します。
    • [ソース読み取り設定] で、提案された同時実行のデフォルトを使用します。
  5. [保存して次へ] をクリックします。

転送先の設定を定義する

[宛先の定義] ページで、次の操作を行います。

  1. [宛先接続プロファイル] リストから、宛先接続プロファイルを選択します。
  2. [保存して次へ] をクリックします。
  3. (省略可)[Test connection profile] セクションで、[Run test] をクリックして、Database Migration Service が宛先へのネットワーク接続を確立できるかどうかを確認します。

    接続テストが失敗した場合でも移行ジョブを作成できますが、移行ジョブを実行する前に接続の問題を修正する必要があります。

  4. [宛先構成をカスタマイズする] セクションで、次の設定を行います。
    • [移行先の最大同時接続数] セクションで、提案された同時実行のデフォルト値を使用します。
    • [Transaction timeout] セクションで、提案されたデフォルトのタイムアウトを使用します。
  5. [保存して次へ] をクリックします。

移行するオブジェクトの選択

  1. [コンバージョン ワークスペース] リストからコンバージョン ワークスペースを選択します。

    コンバージョン ワークスペースを選択すると、ページの [移行するオブジェクトを選択] 領域に、移行先に移行できる Oracle ソース データベースのすべてのオブジェクト(スキーマとテーブル)が一覧表示されます。

  2. Database Migration Service で移行するデータベース オブジェクトをリストから選択します。

  3. [保存して次へ] をクリックします。

移行ジョブをテストして作成する

  1. 移行ジョブに選択した設定を確認します。

  2. [ジョブをテスト] をクリックして、次の点を確認します。

    • 前提条件に基づいてソースが構成されている。

    • Database Migration Service が移行元に接続できること。

    • Database Migration Service が移行先に接続できる。

    • 移行ジョブが有効で、移行元と移行先のバージョンが互換性があります。

    テストに失敗した場合は、フローの適切な部分で問題に対処してから、再テストに戻ることができます。

  3. [ジョブを作成して開始] をクリックして、移行ジョブを作成してすぐに開始します。

  4. 次のダイアログ ボックスで [作成して開始] をクリックします。

  5. [移行ジョブ] ページで、移行ジョブのステータスが [開始中] であることを確認します。数分後、ステータスが [実行中] に変わっていることを確認します。

移行ジョブを確認する

このセクションでは、Database Migration Service が移行ジョブを使用して、移行元のデータベース インスタンスから移行先の AlloyDB for PostgreSQL データベース インスタンスにデータを移行したことを確認します。

データ検証ツールを使用して確認する

オープンソースの データ検証ツールを使用して、移行元と移行先の間でデータが一致することを詳しく検証できます。

次の手順は、より正確な検証を実行するための最小限の例を示しています。

  1. ソースと宛先の両方にアクセスできる仮想マシンをデプロイするか、使用します。

  2. 仮想マシンに、データ検証ツールをインストールするフォルダを作成します。

  3. このフォルダに移動します。

  4. pip を使用してデータ検証ツールをインストールします。

    pip install google-pso-data-validator
    
  5. 移行元の Oracle データベースと移行先の AlloyDB for PostgreSQL データベースへの接続を作成します。

    data-validation connections add -c source Oracle --host 'ip-address' --port port --user username --password pswd --database database-name
    data-validation connections add -c target Postgres --host 'ip-address' --port port --user username --password pswd --database database-name
    

    次に例を示します。

    data-validation connections add -c source Oracle --host '10.10.10.11' --port 1521 --user system --password pswd --database XE
    data-validation connections add -c target Postgres --host '10.10.10.12' --port 5432 --user postgres --password pswd --database postgres
    
  6. 移行元データベースと移行先データベースのデータを比較するテーブルのリストを作成または生成します。

    export TABLES_LIST=$(data-validation find-tables --source-conn target --target-conn target --allowed-schemas schema-name)
    

    次に例を示します。

    export TABLES_LIST=$(data-validation find-tables --source-conn target --target-conn target --allowed-schemas public)
    
  7. すべてのテーブルに対して完全な検証を実行します。

    data-validation validate column --source-conn source --target-conn target --tables-list "${TABLES_LIST}"
    

相対的な整合性を確保するため、この検証はレプリケーション中に実行することをおすすめします。テーブルのクエリが大きい場合、短いプロモーション期間中に実行に時間がかかりすぎることがあります。このような場合は、データ検証ツールを使用してフィルタを追加して実行時間を短縮するか、最終的な検証用にテーブルのサブセットを含むようにテーブルリストを準備します。

これにより、Database Migration Service がデータを移行したことを確認できます。

移行を完了する

継続的な移行では、アプリケーションの移行先クラスタの使用を開始するときに移行ジョブを完了します。

移行ジョブの詳細ページの [昇格] ボタンを使用すると、Database Migration Service がすべての一時移行データをクリーンアップし、移行先を昇格させることができます。

  1. [移行ジョブ] ページに戻ります。

  2. このクイックスタートで作成した移行ジョブをクリックします。これは、確定する移行を表します。[移行ジョブの詳細] ページが表示されます。

  3. データ検証ツールを使用して、行数を確認することでレプリケーションの遅延を追跡します。

    レプリケーションの遅延が大幅に減少するまで待ちます。理想的には、数分または数秒程度です。レプリケーションの遅延は、[移行ジョブ] ページで確認できます。

  4. レプリケーションの遅延が最小限になったら、カットオーバーを開始します。データの損失を回避するには、次の点にご注意ください。

    1. 移行元データベースへのすべての書き込み、実行中のスクリプト、クライアント接続を停止します。休息時間の開始時間

    2. レプリケーションの遅延がゼロになるまで待ちます。これは、移行ジョブが未処理の変更をすべて処理したことを意味します。

    レプリケーションの遅延がゼロでなくても、移行を確定できます。これにより、データベースのダウンタイムを短縮できますが、移行先のデータの精度に影響する可能性があります。

    1. 移行ジョブの詳細ページで [昇格] をクリックし、[移行ジョブを昇格しますか?] ウィンドウで操作を確認します。

    移行ジョブは、移行元データベースからの読み取りを停止します。Database Migration Service は、AlloyDB for PostgreSQL の移行先を昇格させ、一時的な移行データをすべてクリーンアップします。この処理には数分かかることがあります。

  5. 昇格プロセスが完了すると、移行ジョブのステータスが [完了] に変わります。

  6. これで、アプリケーションを宛先の AlloyDB for PostgreSQL インスタンスに接続し、移行ジョブを安全に削除できます。

AlloyDB for PostgreSQL データベース インスタンスの使用準備が整いました。

クリーンアップ

このページで使用したリソースについて、 Google Cloud アカウントに課金されないようにするには、次の操作を行います。

  1. Google Cloud コンソールを使用して、移行ジョブ、変換ワークスペース、接続プロファイル、移行先の AlloyDB for PostgreSQL インスタンス、プロジェクトを、不要な場合は削除します。

次のステップ