10
2

More than 1 year has passed since last update.

OCI-GoldenGateの分散パスを利用してOracle Databaseのリージョン間レプリケーションを実装する

Last updated at Posted at 2023-08-30

はじめに

OCI-GGの構築から同一リージョン間のAutonomous Database Transaction Processing間のレプリケーションを実装したので手順と結果をまとめます。

ドキュメントに記載されている手順がベースですが実際に構築していく中のハマりポイントなど解説していければと思います。

以下参考資料です。

作成したOCI-GG構成

Region Aに配置したATPからプライベートIPアドレスを利用してRegion Bにデータをレプリケーションする構成です。

OCI-GGデプロイメントはそれぞれのRegionに1つずつ作成します。
各デプロイメントにはExtractとReplicatプロセスをそれぞれ作成します。

ソースDBのREDOログから作成されたTrailファイルがOCI-GGのDistribution path (分散パス)を経由してRegion BのOCI-GGに伝搬され、ターゲットDBにReplicatされる構成となります。

image.png
Replicate data between cloud databases in different regions

本構成の前提としてNW設定が必須となります。

  • Region AとRegion BはDRGを利用したリモートピアリング構成
  • OCI-GGの通信のためVCN内のプライベートDNS参照設定

Task0 DB、及びデータ準備

事前にソースDBの作成、及びデータの準備

構成図の赤枠、ソースDBを作成していきます。

image.png

ADBの作成手順は割愛します!

尚、今回レプリケーションするデータはOracle Databaseのベンチマークで使われるSwing Benchが作成するSOEスキーマを利用します。

レプリケーションするトランザクションの発行もSwing Bentchを利用します。

また、GGでレプリケーションを行う場合は、ターゲットDBのどこからレプリケーションするのか?という観点でソースDBとターゲットDBの平仄を合わせる必要があるためデータの断面を論理的に合わせておく必要があります。

初期移行はATPのフルクローンによってターゲットDBの作成とデータの移行を一括で行います。

他にもDataPumpを利用した初期ロードやOCI-GGから初期ロードする選択肢もあります。

Oracle Data Pumpを使用したロードの構成

レプリケーション元のDBに対してソースDB
レプリケーション先のDBに対してターゲットDB
と呼ばれます。

Task1 GGユーザーの作成

まず、Databaseユーザーggadminを有効化します。

今回はATPのデータベースアクションを利用してパスワード設定&アンロックを行います。

①データベースアクション上部のハンバーガーメニューより「データベースユーザー」を押下する。

image.png

②「GGADMIN」を検索する
image.png

③パスワードの入力、及び 「アカウントがロックされています」 のチェックを外し下部の 変更の適用を押下する
image.png

④GGADMINが有効化されてOK
image.png

Task2 最小サプリメンタルロギング設定

続いてREDOログのサプリメンタルロギング設定を有効化します。

①ATPのデータベースアクションより 「SQL」を選択
image.png

②以下のSQLを実行する。

ALTER PLUGGABLE DATABASE ADD SUPPLEMENTAL LOG DATA;

image.png

②確認用SQL

SELECT MINIMAL FROM DBA_SUPPLEMENTAL_LOGGING;

YESでOK
image.png

Task3 PKのVALIDATED設定

TBLのPKがVALIDATEDになっていないときのみ実行
※Swing BenchでGGレプリケーションを実行する場合は必要

ALTER TABLE <TABLE_NAME> MODIFY CONSTRAINT <PK_NAME> VALIDATE;

image.png

Task4 ATP初期ロード(フルクローン)

構成図の赤枠、ターゲットDBの作成をしていきます。
image.png

①クローンの作成を押下
image.png

②クローン先のリージョン選択/ATPの名前を指定
image.png

③クローン先のVCNを指定し、最後にメールアドレスを入力したらクローンの作成を押下
image.png

④クローン中

image.png

⑤クローン完了

image.png

以上でDBの準備は完了です。

Task5 OCIーGGのプロビジョニング

OCI-GGデプロイメントの作成を行います。
今回の構成ではリージョンごとにデプロイメントを作成する必要があるため2つ作成します。

構成図の以下赤枠のソースGGとターゲットGGを作成していきます。

image.png

①GoldenGateのページに遷移
image.png

②デプロイメントの作成を押下
image.png

③一般情報を入力

名前、コンパートメント、OCPU数、GGデプロイメントを配置するサブネット指定

image.png

④GoldenGateの詳細を入力

テクノロジ:Oracle Database
GoldenGateインスタンス名:任意
管理者ユーザー名:任意
管理者パスワード:任意

image.png

尚、テクノロジはOracle Database以外に以下5つの選択肢がありますので用途に応じたサービスが選択できます。
image.png

⑤作成中

image.png

⑥SouceGGのプロビジョニングが完了

image.png

⑥レプリケーション先のターゲットGGも①~⑤の手順で同様に作成

image.png

Task6 認証ユーザーの作成

Reagoin AとRegion BのOCI-GGを接続するための認証ユーザーを作成します。
今回はgguserとします。

①OCIコンソールのGGデプロイメント詳細画面より、コンソールの起動をクリックしURLをコピー

image.png

②GGデプロイメントのサブネットに接続できるNW内のブラウザからURLにアクセスしサインイン

image.png

③サインインできると管理サービスに遷移する

image.png

④管理ページ左上のハンバーガーメニューより、管理者をクリック

image.png

⑤ユーザーの右の「+」をクリック

image.png

⑥ページ下部に入力フォームが出るので必要な情報を入力し発行をクリック

ユーザー名:<任意>
ロール:演算子 ※英語ではOperatorとなります。
タイプ:パスワード
パスワード:<任意>

image.png

⑥これでユーザーの作成が完了

image.png

⑦続いてターゲットGG側でもユーザーの作成を行います。

image.png

後段の手順でGG接続の作成があります。
その際に作成したユーザー名とパスワードが必要になります。

Task7 DB接続の作成とデプロイメントへの割り当て

構成図の赤枠内、のDBとGGの接続部分を作成していきます。

image.png

①OCIコンソールのGoldenGate概要画面から接続を選択し、接続の作成をクリック

image.png

②一般情報を入力

名前:<任意>
コンパートメント:<任意>
タイプ:Oracle Autonomous Database

image.png

※タイプは接続対象によって選択肢が変わり様々な接続サービスが提供されています。

image.png

③詳細情報を入力し、作成をクリック

データベース・ユーザー名:ggadmin
データベース・ユーザー・パスワード:<アンロック時に指定したPW>

image.png

同一コンパートメント内に存在するATPならウォレットや接続情報の入力を省略できます。
ウォレットは自動的に取得されます。

④接続の作成が完了したら、 デプロイメントの割り当て をクリックしGGデプロイメントへの割り当てを行う。

image.png

⑤デプロイメントを選択し「デプロイメントの割り当て」をクリック

image.png

⑥割り当てが完了したら、右部のホットドックメニューから「接続のテスト」を行う

image.png

⑦接続のテストが完了

image.png

⑧ターゲットGGも同様に接続の作成からデプロイメントへの割り当てを行う。

image.png

Task8 GG接続の作成とデプロイメントへの割り当て

Region A とRegion BのGGを連携させるための接続を作成します。

構成図の赤枠、GoldenGate間の連携部分になります。

image.png

GGの接続作成はソースGG側のみです。

①事前に接続先のターゲットGGの情報を取得しておきます。

FQDNの取得
 TargetGGの編集→デプロイメントの編集→FQDN

image.png

Private IPアドレスの取得
 ページ右下のプライベートIPアドレス

image.png

②ソースGG側のGoldenGate、接続の作成をクリック

image.png

③一般情報を入力

名前:<任意>
コンパートメント:<任意>
タイプ:GoldenGate

image.png

④接続詳細を入力

チェックボックス:GoldenGate情報の入力
ホスト:<ターゲットGGのFQDN>
ポート:443
ユーザー名:Task6で作成したGG認証用のユーザー
パスワード:Task6で作成したユーザーのパスワード

OCIコンソール上ではユーザー名とパスワードは オプションと補足されていますが 必須 項目として入力してください。

image.png

チェックボックス:顧客割り当てサブネット
サブネット:
プライベートIPアドレス:<ターゲットGGのIPアドレス>

image.png

ここで選択するサブネットはReagion A とRegion Bが接続されていることが前提で今回はVCNリモートピアリング構成済みであることが必要です。
また、FQDN解決のために双方のVCNに対するプライベートDNSエンドポイント作成の作成が必要です。

③GGの接続の作成が完了したら、DBの割り当てと同じ要領でデプロイメントに割り当てる

image.png

接続テストはDBのみ対応であるためGGデプロイメントへの割り当てパートではテストは行いません。

以上でOCIコンソールの構成図上の構築は終了です。

Task9 OCI-GG Extractの作成

いよいよ、OCI-GGのExtractを作成します。

①ソースGGの管理画面のハンバーガーメニューより 構成 をクリック

image.png

②DBの接続資格証明がリストされます。アクションの赤枠「データベースへの接続」をクリック

image.png

③入力フォームが表示されるので、TRANDATA情報 横の+をクリック

image.png

④レプリケーションする対象スキーマを入力し発行をクリック

image.png

⑤TRANDATAの検索でスキーマが登録されたことを確認

image.png

⑥続いてハートビート横の +を押下し、発行をクリック

image.png

⑦発行が完了

image.png

⑧Extract の+をクリック

image.png

⑨統合Extractを選択し、次へ

image.png

⑩Extractの情報を入力 1/3

プロセス名:<任意>
トレイル名:<任意>

image.png

⑪Extractの情報を入力 2/3 ソース・データベース資格証明を選択し、次へ

資格証明ドメイン:OracleGoldenGate
資格証明別名:<構成で確認したDB接続資格証明の別名>

image.png

image.png

⑫Extractの情報を入力 3/3 パラメータを入力し、「作成及び実行」を押下

パラメータ末尾にレプリケーションするスキーマ名(TBL名)を追加する。

Swing BenchのSOEスキーマの場合

TABLE SOE.*;

image.png

⑬Extractが正常に作成されたことを確認

image.png

Task10 OCI-GG 分散パスの作成

続いて、Reagion AからReagion Bに連携するための 分散パス を作成します。

①ページ右部の + をクリック

image.png

②パスの追加情報を入力 1/3

パス名:<任意>
ソース:<作成したExtract名>
トレイルファイル名:<指定したトレイルファイル名>

image.png

③パスの追加情報を入力 2/3

ターゲット認証方式:ユーザーID別名
Target Protocol:wss
ターゲット:<ターゲットGGのFQDN>
ポート:443
トレイルファイル名:<指定したトレイルファイル名>
認証情報:<構成にリストされたGGの接続資格証明名>
認証情報別名:<構成にリストされたGGの接続資格証明別名>

image.png

③パスの追加情報を入力 3/3

その他はデフォルトで作成及び実行をクリック

image.png

④分散パスが正常に発行されたことを確認

image.png

⑤連携先のターゲットGGのレシーバサービスにも追加されたことを確認

image.png

Task11 OCI-GG Replicatの作成

最後にターゲットGG側でReplicatを作成し、OCI-GGの構築は完了です。

①ターゲットDBの構成を設定するため、ハンバーガーメニューから構成をクリック

image.png

②アクションより、データベースへの接続をクリック

image.png

③GGADMIのスキーマにチェックポイント表を追加する

表名:GGADMIN.<任意のTBL名>

image.png

③ハートビート表の作成を行う

Target Only:有効化

image.png

④概要ページ のReplicat 右部の + をクリック

image.png

⑤パラレルReplicat → 非統合 を選択し、次へ

image.png

⑥Replicat情報を入力 1/2

プロセス名:<任意>
資格証明ドメイン:<構成にリストされたDBの資格証明名>
資格証明別名:<構成にリストされたDBの資格証明別名>
トレイル名:

image.png

⑦Replicat情報を入力 2/2

チェックポイント表:<作成したチェックポイント表名>

入力したら次へ

image.png

⑧パラメータを入力し、作成及び実行

Extractと同様にレプリケーションするスキーマ(TBL)を指定します。

Swing BenchのSOEスキーマの場合

MAP SOE.*, TARGET SOE.*;

image.png

Replicat及びExtractのパラメータはOCI-GGの挙動によってチューニングが必要なポイントになります。
OCI-GGのパラメータは以下のドキュメントを参照しながら行います。

https://docs.oracle.com/cd/F13565_01/reference/summary-oracle-goldengate-parameters.html#GUID-F0B2C37F-DEDC-4990-A51F-30687D48082E

⑨正常にReplicatが構成されたことを確認

image.png

以上で、OCI-GG(分散パス)の構築が終了です。
お疲れ様でした。

レプリケーションしてみる

いよいよ、構成したOCI-GGでデータをレプリケーションさせます。

実行前のプロセスを確認します。
ラグが0秒なのが確認できます。

image.png

ちなみに、実行する前の統計情報はこんな感じです。
レプリケーションラグを管理するハートビート表の連携しかされていないことがわかります。

image.png

それではSwing Benchのcharbenchを利用しソースDBにトランザクションを発行します。

実行コマンド

./charbench -c ../configs/SOE_Server_Side_V2.xml \
         -cf /home/opc/Wallet_extatp2.zip \
         -cs extatp2_tpurgent -u soe -p Welcome1#Welcome1# \
         -v users,tpm,tps,vresp \
         -intermin 0 \
         -intermax 0 \
         -min 0 \
         -max 0 \
         -uc 8 \
         -di SQ,WQ,WA 

実行中。。。

image.png

レプリケーションが開始されてExtractとReplicatに少しラグが出たようです。
ちゃんとレプリケーションされてる証拠ですね。

image.png

今回は5分程度でトランザクションを停止します。

改めて統計情報を見てみると

image.png

ちゃんとSwing BenchのSOEスキーマがレプリケーションされたことが確認できます。

トランザクション発行中のラグがどうだったか?
についてはハートビートを参照することで確認できます。

image.png

大体5-6秒の間を推移しているようです。
また、Extractの時間が割を占めているように見えます。

今回実施したトランザクションのREDO生成量はおよそ30MB/s程度なので、REDO生成量が増えていくと割合も変化していくと考えられます。
その際はパラメータチューニングが必要になってきますね。

まとめ

いかがでしたでしょうか。
オンプレミス版のOracle GoldenGateと比べて、構築自体は優しくなった印象です。
構築作業のほとんどをOCIコンソールから実施できるのも便利でクラウドサービスらしい特徴かと思います。

この手順が参考になれば幸いです。

参考文献

10
2
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
10
2