pg_dumpユーティリティを使用したPostgreSQL環境間での正確なインスタンス化
Oracle GoldenGateを使用して複数のPostgreSQL互換データベース間でレプリケートするときは、PostgreSQLに含まれているpg_dump (pg_dumpall)/pg_restoreバックアップ・ユーティリティを使用できます。これにより、ソース・データベースのバックアップまたはスナップショットが作成されます。これが、ターゲット・システムにリストアされます。
PostgreSQLドキュメントでpg_dump (pg_dumpall)とpg_restoreを参照してください。
次のステップでは、このバックアップをOracle GoldenGateとともに使用して正確な初期インスタンス化(これは、ソースをオフラインにする必要やHANDLECOLLISIONSを使用する必要がない)を実行する方法について説明します。これらのステップでは管理クライアントを使用しますが、同じステップをOracle GoldenGate Microservices WebインタフェースおよびRest APIサービス・エンドポイントから実行できます。
これらのステップを開始する前に、Oracle GoldenGate用のPostgreSQLの準備が完了していることを確認してください。詳細は、PostgreSQLの準備の項を参照してください。
-
管理クライアントからデプロイメントに接続します:
CONNECT https://source:srvmgrport DEPLOYMENT deployment_name AS deployment_user PASSWORD deployment_password -
DBLOGINコマンドを使用してソースPostgreSQLデータベースに接続します。ソース・データベースへのデータベース接続を設定していない場合は、「データベース接続の追加」のステップを使用するか管理クライアントからALTER CREDENTIALSTOREコマンドを使用して設定できます。
たとえば、別名がggeastの場合、コマンドは次のようになります:DBLOGIN USERIDALIAS aliasDBLOGIN USERIDALIAS ggeast -
ソース・データベースにチェックポイント表を追加します。
ADD CHECKPOINTTABLE owner.table_nameたとえば:ADD CHECKPOINTTABLE ggs.checkpoint -
Extractパラメータ・ファイルを作成してレプリケート対象の表を取得し、
REGISTER EXTRACTコマンドを使用してソースPostgreSQLデータベースに新しいExtractを登録します。ただし、Extractを追加しないでください。REGISTER EXTRACT extract_nameたとえば:
REGISTER EXTRACT extcdc -
Extractプロセスの開始ポイントを作成するためとPostgreSQLスナップショットの位置指定のために使用される、一時レプリケーション・スロットを作成します。これは、
CREATE_REPLICATION_SLOTコマンドを使用して実行できます。次に、一時レプリケーション・スロットを構成するステップを示します:-
レプリケーション・ロールがあるユーザーとして
psqlを使用してPostgreSQLデータベースにログインします。 -
replication=databaseオプションを使用します。これは、ステップ2で作成したのと同じユーザーです。たとえば:
$ psql "dbname=pgsource replication=database user=ggeast" Password for user ggadmin: psql (16.3) Type "help" for help. pgsource=# CREATE_REPLICATION_SLOT tslot TEMPORARY LOGICAL test_decoding EXPORT_SNAPSHOT; slot_name | consistent_point | snapshot_name | output_plugin ----------+------------------+---------------------+--------------- tslot | 1/4232A6B0 | 00000007-00001142-1 | test_decoding (1 row) -
snapshot_nameおよびconsistent_pointを書き留めます。
-
-
次の例で示すように、
pg_dump(または、クラスタ・データベースの場合はpg_dumpall)を使用してスナップショットを作成します:ノート:
このコマンドの実行には時間がかかる場合があります。
nohupオプションを使用してこのコマンドを発行し、セッションがクローズしてもコマンドが停止されないようにすることをお薦めします。$ nohup /u01/pgsql-16/bin/pg_dump -h pgsource -p 5432 -U ggeast –snapshot=00000007-00001142-1 -F c -b -v -f latestdump.db pgsource &pg_dump/pg_dumpallでは、ステップ5cの出力から受信したsnapshot_nameが使用されています。この例では、pg_dumpオプションは、データベース全体をレプリケートすることが前提となっています。しかしながら、データベースの一部をレプリケートする場合は、それらのオブジェクトのみをダンプできます。 -
ADD EXTRACTコマンドを使用してExtractを追加します。Extractの位置は、ステップ5cで記録したconsistent_pointに設定する必要があります。ADD EXTRACT extract_name, TRANLOG, LSN lsn_valueたとえば:
ExtractをこのLSN値に位置指定し、ダンプに含まれているデータがExtractで取得されないようにします。ADD EXTRACT extecdc, TRANLOG, LSN 1/42332A6B0 -
ADD EXTTRAILコマンドを使用してExtract証跡を追加します。ADD EXTTRAIL trail_name, EXTRACT extract_nameたとえば:ADD EXTTRAIL east/ea, EXTRACT extecdc -
Extractを起動します。
START EXTRACT extract_name -
(オプション)証跡ファイルを別のサーバーに送信するために分散パスを構成する必要がある場合は、
ADD DISTPATHコマンドを使用します。ADD DISTPATH name SOURCE source_uri TARGET target_uriたとえば:ADD DISTPATH dpecdc SOURCE trail://localhost:9002/services/v2/sources?trail=ea TARGET wss://localhost:9003/services/v2/targets?trail=ea -
pg_restoreコマンドを使用して、ターゲット・サーバーにデータベースをリストアします。pg_dumpの場合と同様に、セッションが失われるとリストアに失敗するためnohupオプションを使用することをお薦めします。この例では、次のオプションを使用しています:$ nohup /u01/pgsql-16/bin/pg_restore -h pgtarget -p 6432 -U ggadmin -d pgtarget -v latestdump.db & -
(オプション)別のデプロイメントでレシーバ・サービスへの分散パスを作成した場合は、管理クライアントの
CONNECTコマンドを使用してターゲット・デプロイメントに接続する必要があることがあります。CONNECT https://target:srvmgrport DEPLOYMENT deployment_name AS deployment_user PASSWORD deployment_password -
DBLOGIN USERIDALIASコマンドを使用してターゲットPostgreSQLデータベースに接続します。ソース・データベースへのデータベース接続を設定していない場合は、「データベース接続の追加」のステップを使用するか管理クライアントからALTER CREDENTIALSTOREコマンドを使用して設定できます。 -
ターゲット・データベースにチェックポイント表を追加します。
ADD CHECKPOINTTABLE ggs.chkpoint -
Replicatを追加します。これにより、データベースのリストアが完了した後にターゲット・データベースに変更が適用されます。
ADD REPLICAT replicat_nameたとえば:
ADD REPLICAT repecdc -
リストアが完了したら、次の例で示すようにReplicatを起動します:
START REPLICAT repecdc