※ 本記事は、Sanoj Beheraによる”Seamlessly migrate an on-premise PostgreSQL database to OCI Database with PostgreSQL using OCI GoldenGate“を翻訳したものです。
2023年12月20日
Oracle Cloud Infrastructure (OCI) Database with PostgreSQL バージョン 14.9が利用可能になったため、オンプレミスのPostgreSQLからOCI Database with PostgreSQLへのデータの移行をテストできます。これは、インテリジェントなサイジング、チューニング、および耐久性を備えた完全管理型のPostgreSQL互換サービスです。
詳細は、OCI Database with PostgreSQLの概要を参照してください。
このブログでは、OCI Goldengate for PostgreSQLを使用して、オンプレミスのPostgreSQLからOCI PostgreSQLへのゼロ・ダウンタイム移行を実行する方法について説明します。
Oracle Cloud Infrastructure GoldenGateについて
Oracle Cloud Infrastructure GoldenGateの使用を開始するのに役立つデータ・レプリケーションの概念について学習します。
Oracle Cloud Infrastructure GoldenGateは、データをリアルタイムで大規模に移動するフルマネージドのネイティブ・クラウド・サービスです。OCI GoldenGateは、1つ以上のデータ管理システムからターゲット・データベースに移動するときにデータを処理します。また、コンピュート環境の割り当てや管理を行わずに、データ・レプリケーションの設計、実行、調整、監視、データの変換、ストリーミング・データの分析をリアルタイムで行うこともできます。
短い概要ビデオを視聴するか、インタラクティブなサービス・ツアーで詳細をご確認ください。
アーキテクチャ

OCI Database with PostgreSQLへのエンドツーエンドの移行
OCI Database with PostgreSQLへのエンドツーエンドの移行には、次の6つの主要ステージが含まれます:
- ソース・メタデータのバックアップの取得
- メタデータ・ファイルをOCI Database with PostgreSQLにインポート
- ソース・オンプレミスで初期ロード抽出を作成し、LSN番号を記録
- 同じ証跡ファイル(初期ロードExtract)を使用したOCI Database with PostgreSQLターゲットでの初期ロードReplicatの作成
- ソース・オンプレミスでCDC抽出を作成し、取得したLSN番号から開始
- 同じ証跡ファイル(CDC Extract)を使用して、OCI Database with PostgreSQLターゲットでCDC Replicatを作成して実行
ソース環境
- データベース名: ociggll
- ユーザー: admin
- スキーマ: src_ociggll
- バージョン: PostgreSQL 14.10
ターゲット環境
- データベース名: ociggllTgt
- ユーザー: postgres
- スキーマ: src_ociggll
- バージョン: PostgreSQL 14.9
前提条件
始める前に、Oracle Cloudアカウントが必要です。
VCNとサブネット、bastion(コンピュート・イメージ)を作成し、OCI PostgreSQLデータベース・インスタンスをプロビジョニングします。
「Databases」、「OCI PostgreSQL DB system」の順に移動します。







「Submit」をクリックします。

次のエラーが表示される場合があります。

ドキュメントに従って、プライベート・サブネットを使用する必要があります: データベース・システムの作成(oracle.com)

データベースが作成され、アクティブであることが示されます。

PostgreSQLソース・オンプレミス・データベース (PGADMIN4を使用した監視)

SQL Developerを使用した監視

ソース・データをチェックします。
次のコマンドを実行して、ユーザーを設定します(ソース・データベース上):

OCI Database with PostgreSQL (ターゲット)
オンプレミス・データベースをリストアするための新しいデータベースを作成しました。このテストでは、デフォルトのデータベースpostgresは使用しません。


オンプレミスのPostgreSQLデータベースへのOCI Goldengate接続を作成するには、次のブログに従います: https://blogs.oracle.com/dataintegration/post/using-oracle-cloud-infrastructure-oci-goldengate-with-postgresql-databases.





OCI GoldenGate Deployment for PostgreSQLの作成



ターゲット接続の作成


ノート: OCI PostgreSQL接続の作成については、次の点に注意してください:
- トラフィック・ルーティング方法としてDedicatedエンドポイントを使用
- OCI-GGがOCI PostgreSQLプライベートIPにアクセスするためのプライベート・エンドポイントを作成できるように、プライベート・サブネットを選択
- 選択したサブネットでポート5432が開いていることを確認
- SSLモードを「Prefer」に設定(必須)
OCI GoldenGateデプロイメントが作成され、接続が割り当てられたら、「Deployment details」ページに移動してコンソールを起動します。


管理サービスで、「Configuration」に移動して資格証明を開きます。「Connect」ボタンをクリックして接続を確認します。

sslModeは、ターゲットOCI PostgreSQLデータベースで優先するように設定する必要があります。
適切なSSLモードを使用していない場合は、次のエラー・メッセージが表示されます。詳細は、「OCI Database with PostgreSQL – PSQL Error: ‘FATAL: no pg_hba.conf entry for host, no encryption’ when trying to Connect to Server (Doc ID 2983992.1)」を参照してください。
pg_dumpを使用したエクスポート・バックアップの取得
次に、ソース・データベースからメタデータ・バックアップを取得し、ターゲット・データベースにリストアします。
pg_dump -h <source-host> -U admin -d ociggll -F c -v -s –file=sourceexport.dump
Pgdumpのドキュメント: https://www.postgresql.org/docs/14/app-pgdump.html
pg_restoreを使用したOCI PostgreSQL DBシステムへのメタデータ・ダンプ・ファイルのインポート
pg_restore -h <private endpoints> -U postgres -d ocigglltgt -v sourceexport.dump
リストア操作が正常に完了したら、表がデータベースに存在することを確認できます。
ここでは、OCI Goldengateを使用して、実際のデータの初期ロードおよびCDCテストを行います。
初期ロード
初期ロード抽出を作成し、LSN番号を書き留める必要があります。


「正確なインスタンス化を使用したPostgreSQLソース・データベースの初期同期の構成」を参照してください。
ノート: Extractが失敗した場合は、次の要件を確認します:
PostgreSQLの追加要件は次のとおりです:
- PostgreSQLデータベースからキャプチャするには、Oracle GoldenGateで、データベースにtest_decodingデータベース・プラグインをインストールする必要があります。これは、デフォルトではインストールされていない可能性があります。
- postgresqlversion#-contribパッケージがデータベース・サーバーにインストールされていることを確認します。
次に例を示します: sudo yum install postgresql13-contrib
クライアント・ライブラリのバージョンは、PostgreSQLデータベース・バージョンと一致することをお薦めします。10未満のクライアント・バージョンはサポートされていません。
sudo yum install postgresql14-contrib (our database is version 14)
初期ロード抽出が停止したら、レポート・ファイルを確認し、LSNの詳細をメモします。
ターゲットOCI PostgreSQL DBシステムのチェックポイント表(src_ociggll.ckpt)を作成します:

ターゲット・データベースの初期ロードReplicatの作成
任意のReplicatタイプ(Classic、CoordinatedまたはParallel)を使用できます。


Replicatが正常に起動したら、ターゲット・データベースの初期ロード・データを検証できます。
次に、CDC抽出を作成し、以前に書き留めたLSN値から開始します。
その前に、ソース・スキーマのtrandataを追加します。「Administration Service」→「Configuration」に移動し、ソース・データベースに接続します。


次に、CDC抽出を追加します。
スキーマ名を指定したら、「Create」をクリックします。
作成したら、「Actions」->「Start with Options」->「Enter the LSN」->「Start」をクリックします。
次に、ソース・スキーマでいくつかのトランザクションを生成します。
Extract統計を確認します。
最後に、CDC Replicatを作成します。

Replicatが正常に起動したら、その統計を確認できます。
これで、ソース・データとターゲット・データを比較できます。それらは同期しています。


すべてのプロセスが実行されているGoldenGateコンソールが表示されます。
移行の検証
転送されたデータベース・オブジェクトとデータをターゲットOCI PostgreSQL DBシステムで検証して、移行が成功し、問題や相違がないことを確認します。
まとめ
OCI Goldengate for PostgreSQLを使用すると、データベースをオンプレミスからOCI Database with PostgreSQLにオンラインでシームレスに移行できます。これらのステップに従い、OCI GoldenGateの機能を活用することで、移行プロセスを成功させ、効率的に行うことができます。
Oracleの革新的なマネージドPostgreSQLサービスであるOCI Database with PostgreSQLは、最先端のオープンソース・テクノロジーと、Oracle Cloud Infrastructure(OCI)の堅牢性とスピードを組み合わせています。
現在、すべてのデフォルト・データベース(template0、template1およびpostgres)はoci_superuserによって所有されています。customer_admin_user (DBシステムの作成の一部として作成された最初のユーザーoci)には、どのデフォルト・データベースにも新しいスキーマを作成する権限がありません。回避策として、最初にデータベース(postgres以外の名前)を作成してから、そのデータベースに接続してスキーマを作成できます。今後の最新情報をお楽しみに …
