※ 本記事は、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つ以上のデータ管理システムからターゲット・データベースに移動するときにデータを処理します。また、コンピュート環境の割り当てや管理を行わずに、データ・レプリケーションの設計、実行、調整、監視、データの変換、ストリーミング・データの分析をリアルタイムで行うこともできます。

短い概要ビデオを視聴するか、インタラクティブなサービス・ツアーで詳細をご確認ください。

アーキテクチャ

Overall Architecture

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」の順に移動します。
Create OCI DB with PostgreSQL

OCI PostgreSQL Creation 2

OCI PostgreSQL Creation 3

OCI PostgreSQL Creation 4

OCI PostgreSQL Creation 5

OCI PostgreSQL Creation 6

OCI PostgreSQL Creation 7

Submit」をクリックします。
OCI PostgreSQL creation - final screen

次のエラーが表示される場合があります。
OCI PostgreSQL DB creation - possible error

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

OCI PostgreSQL network configuration requirements

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

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


SQL Developerを使用した監視
OCI PostgreSQL monitoring using SQL Developer

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


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

New PostgreSQL database in SQL Developer

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

Source Connection in OCI GoldenGate

Source DB Connection in OCI GoldenGate - Part 2

Source DB Connection in OCI GoldenGate - Part 3

Source DB Connection in OCI GoldenGate - Details page

Source DB Connection in OCI GoldenGate - Active connection

 

OCI GoldenGate Deployment for PostgreSQLの作成

 

OCI GoldenGate PostgreSQL Deployment Creation - 1/3

OCI GoldenGate PostgreSQL Deployment Creation - 2/3

OCI GoldenGate PostgreSQL Deployment Creation - 3/3

 

ターゲット接続の作成



OCI PostgreSQL Target Connection Creation - 1/3 
 OCI PostgreSQL Target Connection Creation - 2/3

OCI PostgreSQL Target Connection Creation - 3/3
 
ノート: OCI PostgreSQL接続の作成については、次の点に注意してください:

  • トラフィック・ルーティング方法としてDedicatedエンドポイントを使用
  • OCI-GGがOCI PostgreSQLプライベートIPにアクセスするためのプライベート・エンドポイントを作成できるように、プライベート・サブネットを選択
  • 選択したサブネットでポート5432が開いていることを確認
  • SSLモードを「Prefer」に設定(必須)

OCI GoldenGateデプロイメントが作成され、接続が割り当てられたら、「Deployment details」ページに移動してコンソールを起動します。
OCI GoldenGate deployment for PostgreSQL - Details page

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

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
pg_dump command 
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
pg_restore command 
リストア操作が正常に完了したら、表がデータベースに存在することを確認できます。
Verify source data using SQL Developer 
ここでは、OCI Goldengateを使用して、実際のデータの初期ロードおよびCDCテストを行います。

初期ロード

初期ロード抽出を作成し、LSN番号を書き留める必要があります。
Initial Load Extract Creation - 1/2

Initial Load Extract Creation - 2/2
 
正確なインスタンス化を使用した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の詳細をメモします。
Extract statistics 
ターゲットOCI PostgreSQL DBシステムのチェックポイント表(src_ociggll.ckpt)を作成します:
Create Checkpoint Table - 1/2 
 Create Checkpoint Table - 2/2
ターゲット・データベースの初期ロードReplicatの作成

任意のReplicatタイプ(Classic、CoordinatedまたはParallel)を使用できます。
Initial Load Replication - 1/3 
 Initial Load Replication - 2/3
Initial Load Replication - 3/3

Replicatが正常に起動したら、ターゲット・データベースの初期ロード・データを検証できます。
Verify target data in SQL Developer 
次に、CDC抽出を作成し、以前に書き留めたLSN値から開始します。

その前に、ソース・スキーマのtrandataを追加します。「Administration Service」→「Configuration」に移動し、ソース・データベースに接続します。
Add Trandata - 1/2

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

Extract統計を確認します。
CDC Extract Statistics 
最後に、CDC Replicatを作成します。
Add CDC Replicat - 1/3 
Add CDC Replicat - 2/3

Add CDC Replicat - 3/3 
Replicatが正常に起動したら、その統計を確認できます。
CDC Replicat Statistics 
これで、ソース・データとターゲット・データを比較できます。それらは同期しています。
Compare source and target data

Compare source/target data - 2/2
すべてのプロセスが実行されているGoldenGateコンソールが表示されます。
GoldenGate Console with end-to-end replication into OCI Database with PostgreSQL 
移行の検証

転送されたデータベース・オブジェクトとデータをターゲット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以外の名前)を作成してから、そのデータベースに接続してスキーマを作成できます。今後の最新情報をお楽しみに …