1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

OCI 上で構築した PostgreSQL に対するOCI GoldenGateを利用したCDCレプリケーション

Last updated at Posted at 2024-05-08

前回の記事で構築した、OCI上のOracle Linux 9上のPostgreSQLと、OCIでマネージドサービス(PaaS)として提供されているOCI Database with PostgreSQLを利用し、OCI GoldenGateを利用したリアルタイムデータ同期の設定を行いました。連携用のスキーマの作成などOCI GoldenGateを利用するための事前準備については前回の記事をご参照ください。

OCI GoldenGateの設定は下記のドキュメントとブログ記事を参考に実施しています。

Oracle Cloud Infrastructure GoldenGate
Replicate Data from PostgreSQL to Autonomous Transaction Processing
https://docs.oracle.com/en/cloud/paas/goldengate-service/rjsql/

オラクルエンジニア通信 - 技術資料、マニュアル、セミナー
OCI GoldenGateを使用して、オンプレミスのPostgreSQLデータベースをOCI Database with PostgreSQLにシームレスに移行
https://blogs.oracle.com/oracle4engineer/post/ja-migrate-onp-postgresql-to-oci-postgresql-with-oci-gg

今回の検証ではOCI GoldenGate 21cを利用して実施しました。

OCI GoldenGateデプロイメント・インスタンス作成の為の準備

OCIのアーキテクチャ

ソースデータベースとターゲットデータベースは下記ように配備されています。
それぞれのデータベースはPrivate Endpointを利用してOCI GoldenGateと接続を行います。
Pasted Graphic 137.png

OCI GoldenGateの利用に必要なIAMポリシーの作成

ナビゲーション・メニューより、アイデンティティとセキュリティ > アイデンティティ > ポリシー にアクセスします。

Pasted Graphic 1.png

OCI GoldenGateの利用に必要なIAMポリシーの設定例はこちらになります。
Administratorsグループに対しTenancy全体に有効なポリシーを設定するため、ルート・コンパートメントに下記ポリシーを設定しました。
参考: https://docs.oracle.com/ja-jp/iaas/goldengate/doc/policies.html

allow group Administrators to manage goldengate-family in tenancy
allow group Administrators to manage virtual-network-family in tenancy
allow service goldengate to {idcs_user_viewer, domain_resources_viewer} in tenancy
allow group Administrators to manage secret-family in tenancy
allow group Administrators to use keys in tenancy
allow group Administrators to use vaults in tenancy
allow service goldengate to use keys in tenancy
allow service goldengate to use vaults in tenancy

下記のポリシーは任意のため必要に応じて設定します。

  • ソース・データベースまたはターゲット・データベース(あるいはその両方)用のOracle Database
allow group Administrators to read database-family in tenancy
allow group Administrators to read autonomous-database-family in tenancy
  • 手動のOCI GoldenGateバックアップを格納するためのOracle Object Storage
allow group Administrators to manage objects in tenancy
allow group Administrators to inspect buckets in tenancy
  • OCIロギング: ログ・グループにアクセス
allow group Administrators to manage log-groups in tenancy
allow group Administrators to manage log-content in tenancy

*Load Balancer (デプロイメント・コンソールへのパブリック・アクセスを有効にした場合)

allow group Administrators to manage load-balancers in tenancy
allow group Administrators to manage public-ips in tenancy
allow group Administrators to manage network-security-groups in tenancy
allow group Administrators to manage vcns in tenancy where ANY {request.operation = 'CreateNetworkSecurityGroup', request.operation = 'DeleteNetworkSecurityGroup'}
  • ワークスペースのタグ・ネームスペースおよびタグを管理するためのグループ権限
allow group Administrators to manage tag-namespaces in tenancy

OCIコンソールからポリシーの作成を選択し、必要なポリシーを作成していきます。

Pasted Graphic 2.png
Pasted Graphic 3.png

OCI Vaultの作成

ナビゲーション・メニューより、アイデンティティとセキュリティ > キー管理とシークレット管理 > ボールトにアクセスします。

Pasted Graphic 4.png

ボールトの作成をクリックし、下記を入力します。

  • コンパートメントに作成:demo
    • 名前:OCIVault
    • 仮想プライベート・ボールトにする:無効

      Pasted Graphic 5.png

次にマスター暗号化キーを作成します。「キーの作成」を選択し、下記パラメータを入力します。

  • コンパートメントに作成:demo
  • 保護モード:HSM
  • 名前:MasterKey
  • キーのシェイプ:アルゴリズム:AES
  • キーのシェイプ:長さ:256ビット

Pasted Graphic 6.png

OCI GoldenGateデプロイメント・インスタンスの作成

ナビゲーション・メニュー より、Oracle Database > GoldenGateにアクセスします。
デプロイメントの作成を選択し、ウィザード内の入力項目に対し下記の値を設定していきます。

① 一般情報

  • 名前:OCIGG4Postgres
  • 説明:オプション
  • コンパートメント:”コンパートメント名”
  • 本番 / 開発またはテスト:開発またはテストを選択
  • OCPU数:1
  • 自動スケーリング:無効
  • サブネット in ”コンパートメント名”: ex) Postgres_Private_Subnet (demo-vcn VCN内)
  • ライセンス・タイプの選択:ライセンス込み
  • Show advanced options内
    • ネットワーク
    • GoldenGateコンソール・パブリック・アクセスの有効化:有効
    • ロード・バランサ・サブネット in demo:Public Subnet (demo-vcn VCN内)

②GoldenGateの詳細

  • デプロイメント・タイプの選択:データ・レプリケーション
  • テクノロジの選択:PostgreSQL
  • バージョン:oggpostgresql:21.13.0.0.0_240227.2300_952
  • GoldenGateインスタンス名:OCIGG4Postgres
  • 資格証明ストア:GoldenGate
  • 管理者ユーザー名:ociggadmin
  • パスワードシークレットの作成
    • 名前:secret4ocigg
    • 説明:オプション
    • コンパートメント:”コンパートメント名”
    • ボールト in ”コンパートメント名”:OCIVault
    • 暗号化キー in demo:MasterKey
    • ユーザー・パスワード:


Pasted Graphic 7.png

Pasted Graphic 8.png

Pasted Graphic 9.png

Pasted Graphic 10.png

Pasted Graphic 11.png

OCI GoldenGateデータベース接続の作成

OCI GoldenGateではデータベースに対する接続情報をOCIコンソールから設定しGoldenGateに登録を行います。
作成した接続では事前に接続性のテストを実行することができ、接続性に関する問題の切り分けを実施することが可能です。

ソースデータベースに対する接続の作成

「接続の作成」を選択し、ウィザード内の入力項目に対し下記の値を設定していきます。

①一般情報

  • 名前:SourcePostgres
  • 説明:オプション
  • コンパートメント:”コンパートメント名”
  • タイプ:PostgreSQLサーバー

②接続詳細

  • データベース名:ociggll
  • ホスト:10.0.100.203
  • ポート:5432
  • データベース・ユーザー名:ggadmin
  • データベース・ユーザー・パスワード:ggadminユーザーのパスワード
  • SSL詳細
    • セキュリティ・プロトコル:TLS
    • SSLモード:プレーン
  • ネットワーク接続:専用エンドポイント
  • サブネット in demo:ociggllが稼働するComputeインスタンスが配備されたサブネットを指定


Pasted Graphic 12.png

Pasted Graphic 13.png

Pasted Graphic 14.png

Pasted Graphic 15.png

作成した接続がアクティブになったら、「デプロイメントの割当て」を選択し、事前に作成しておいたOCI GoldenGateのデプロイメント・インスタンスに対する登録を行います。

Pasted Graphic 16.png

デプロイメントの割当てが完了したら、接続テストを実施し、ソースデータベースに対する接続性に問題がないことを確認します。

Pasted Graphic 17.png

Pasted Graphic 18.png

###ターゲットデータベースに対する接続の作成
ソースデータベースと同様にターゲットデータベースの接続を作成します。
「接続の作成」を選択し、ウィザード内の入力項目に対し下記の値を設定していきます。
OCI Database with PostgreSQLに対する接続の際はセキュリティ・プロトコルにTLSを、SSLモードを優先に設定することがポイントです。
作成した接続がアクティブになったら、「デプロイメントの割当て」を選択し、事前に作成しておいたOCI GoldenGateのデプロイメント・インスタンスに対する登録を行い、接続テストを実施し、ソースデータベースに対する接続性に問題がないことを確認します。

①一般情報

  • 名前:TargetPostgres
  • 説明:オプション
  • コンパートメント:”コンパートメント名”
  • タイプ:PostgreSQLサーバー

②接続詳細

  • データベース名:ociggllTgt
  • ホスト:10.0.40.168
  • ポート:5432
  • データベース・ユーザー名:ggadmin
  • データベース・ユーザー・パスワード:ggadminユーザーのパスワード
  • SSL詳細
    • セキュリティ・プロトコル:TLS
    • SSLモード:優先
  • ネットワーク接続:専用エンドポイント
  • サブネット in demo:ociggllTgtが稼働するComputeインスタンスが配備されたサブネットを指定


Pasted Graphic 19.png

Pasted Graphic 20.png

Pasted Graphic 21.png

Pasted Graphic 22.png

OCI GoldenGateを利用した初期ロードの実行

OCI GoldenGate管理コンソールへアクセス

OCI GoldenGateのサービスダッシュボードのデプロイメントの詳細画面にて、「コンソール」の起動を選択し、OCI GoldenGateの管理コンソールにアクセスします。

Pasted Graphic 23.png

OCI GoldenGateデプロイメント作成時に指定した管理者ユーザー名(ociggadmin)、シークレット作成時に指定したパスワードを利用してサインインします。

Pasted Graphic 24.png

Pasted Graphic 25.png

サプリメンタルロギングの設定

左上のナビゲーション・メニューから「構成」にアクセスし、デプロイメントに「接続」が登録されていることを確認します。

Pasted Graphic 26.png

ソースデータベースのアクションメニューを選択し、「TRANDATA情報」横の+マークを選択します。スクリーンショットを参考にして表名に連携対象となるスキーマ名を入力し、「発行」を選択します。
その後、TRANDATA情報の「表の検索」にて移行対象となるテーブルが参照できることを確認します。

Pasted Graphic 27.png

Pasted Graphic 28.png

Pasted Graphic 29.png

ターゲットデータベースの接続に対しても同様の手順を実施しました。

初期ロード用Extractの作成

OCI GoldenGateの管理コンソール、「管理サービス」の画面から「Extract」横の+アイコンを選択し、新規Extractの作成を行います。
各設定値についてはスクリーンショットを参考にしてください。

Pasted Graphic 30.png

Pasted Graphic 31.png

Pasted Graphic 32.png

初期ロード用のExtractが作成したら、アクションメニューより「詳細」を選択し、「レポート」のメニューにて、LSNの値をメモしておきます。

Pasted Graphic 33.png

Pasted Graphic 34.png

Pasted Graphic 35.png

初期ロードReplicatの作成

「構成」画面より、ターゲットデータベース接続のアクションメニューよりチェックポイント表(src_ociggll.ckpt)を作成します。

Pasted Graphic 36.png

OCI GoldenGateの管理コンソール、「管理サービス」の画面から「Replicat」横の+アイコンを選択し、新規Replicatの作成を行います。
各設定値についてはスクリーンショットを参考にしてください。


Pasted Graphic 37.png

Pasted Graphic 38.png

Pasted Graphic 39.png

Pasted Graphic 40.png

Pasted Graphic 41.png

初期ロード結果の確認

初期ロード用のReplicatを作成し、正常に稼働したことを確認したらターゲットデータベースにアクセスし、初期ロードが問題なく実施できていることを確認します。

bash-5.1$ psql -h 10.0.40.168 -d ocigglltgt -U ggadmin;
Password for user ggadmin: 
psql (16.2, server 14.10)
SSL connection (protocol: TLSv1.2, cipher: ECDHE-RSA-AES256-GCM-SHA384, compression: off)
Type "help" for help.

ocigglltgt=> select table_schema, table_name, src_ociggll.cnt_rows(table_schema, table_name) from information_schema.tables where table_schema not in ('pg_vatalog', 'information_schema') and table_type='BASE TABLE' order by 3 desc;
 table_schema |       table_name        | cnt_rows 
--------------+-------------------------+----------
 pg_catalog   | pg_ts_template          |        5
 pg_catalog   | pg_namespace            |        5
 pg_catalog   | pg_language             |        4
 pg_catalog   | pg_database             |        4
 src_ociggll  | log                     |        3
 pg_catalog   | pg_shdescription        |        3
 pg_catalog   | pg_tablespace           |        3
 pg_catalog   | pg_extension            |        1


ocigglltgt=> select * from src_ociggll.log;
 id |            date            
----+----------------------------
  1 | 2024-04-25 04:44:05.859543
  2 | 2024-04-25 04:44:05.860827
  3 | 2024-04-25 04:44:05.86153
(3 rows)

ocigglltgt=> 

初期ロードが実行されていることを確認できました。

OCI GoldenGateを利用したリアルタイムレプリケーション(CDCレプリケーション)

CDC用Extractの追加

下記のスクリーンショットの設定値を参考にCDC用のExtractを新規で追加します。

Pasted Graphic 42.png

Pasted Graphic 43.png

Pasted Graphic 44.png

アクションメニューより「オプションを指定して開始」を選択します。開始ポイントに「CSN」を選択し、CSNの項目に事前確認しておいたLSNの値を入力します。

Pasted Graphic 45.png

Pasted Graphic 46.png

CDC用のReplicatの追加

下記のスクリーンショットの設定値を参考にCDC用のReplicatを新規で追加します。


Pasted Graphic 47.png

Pasted Graphic 48.png

Pasted Graphic 49.png

Pasted Graphic 50.png

CDCレプリケーションの確認

ソースデータベースにアクセスし、新規レコードを追加します。

$ psql ociggll -U ggadmin;
INSERT INTO src_ociggll.log(id, date) VALUES (4, current_timestamp);
INSERT INTO src_ociggll.log(id, date) VALUES (5, current_timestamp);
INSERT INTO src_ociggll.log(id, date) VALUES (6, current_timestamp);
ociggll=# select * from src_ociggll.log;
 id |            date            
----+----------------------------
  1 | 2024-04-25 04:44:05.859543
  2 | 2024-04-25 04:44:05.860827
  3 | 2024-04-25 04:44:05.86153
  4 | 2024-04-25 07:45:00.515204
  5 | 2024-04-25 07:45:00.516501
  6 | 2024-04-25 07:45:00.517101
(6 rows)

ociggll=# 

ターゲットデータベースにアクセスし、ソースデータベースに対する変更が伝搬できていることを確認します。

bash-5.1$ psql -h 10.0.40.168 -d ocigglltgt -U ggadmin;
Password for user ggadmin: 
psql (16.2, server 14.10)
SSL connection (protocol: TLSv1.2, cipher: ECDHE-RSA-AES256-GCM-SHA384, compression: off)
Type "help" for help.

ocigglltgt=> select * from src_ociggll.log order by id asc;
 id |            date            
----+----------------------------
  1 | 2024-04-25 04:44:05.859543
  2 | 2024-04-25 04:44:05.860827
  3 | 2024-04-25 04:44:05.86153
  4 | 2024-04-25 07:45:00.515204
  5 | 2024-04-25 07:45:00.516501
  6 | 2024-04-25 07:45:00.517101
(6 rows)

ocigglltgt=> 

参考情報

https://docs.oracle.com/en/cloud/paas/goldengate-service/rjsql/
https://blogs.oracle.com/oracle4engineer/post/ja-migrate-onp-postgresql-to-oci-postgresql-with-oci-gg

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?