はじめに
OCI-GGの構築から同一リージョン間のAutonomous Database Transaction Processing間のレプリケーションを実装したので手順と結果をまとめます。
ドキュメントに記載されている手順がベースですが実際に構築していく中のハマりポイントなど解説していければと思います。
以下参考資料です。
-
OCI-GGの公式ドキュメント
Oracle Cloud Infrastructure GoldenGateの概要 -
OCI-GGの構築手順
Oracle GoldenGate Microservices Documentation -
OCI-GGのSpeakerdeck
OCI-GoldenGate Overview -
OCI-GGのチュートリアル
401 : OCI GoldenGateによるBaseDBからADBへのデータ連携
作成した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される構成となります。
Replicate data between cloud databases in different regions
本構成の前提としてNW設定が必須となります。
- Region AとRegion BはDRGを利用したリモートピアリング構成
- OCI-GGの通信のためVCN内のプライベートDNS参照設定
Task0 DB、及びデータ準備
事前にソースDBの作成、及びデータの準備
構成図の赤枠、ソースDBを作成していきます。
ADBの作成手順は割愛します!
尚、今回レプリケーションするデータはOracle Databaseのベンチマークで使われるSwing Benchが作成するSOEスキーマを利用します。
レプリケーションするトランザクションの発行もSwing Bentchを利用します。
また、GGでレプリケーションを行う場合は、ターゲットDBのどこからレプリケーションするのか?という観点でソースDBとターゲットDBの平仄を合わせる必要があるためデータの断面を論理的に合わせておく必要があります。
初期移行はATPのフルクローンによってターゲットDBの作成とデータの移行を一括で行います。
他にもDataPumpを利用した初期ロードやOCI-GGから初期ロードする選択肢もあります。
レプリケーション元のDBに対してソースDB
レプリケーション先のDBに対してターゲットDB
と呼ばれます。
Task1 GGユーザーの作成
まず、Databaseユーザーggadminを有効化します。
今回はATPのデータベースアクションを利用してパスワード設定&アンロックを行います。
①データベースアクション上部のハンバーガーメニューより「データベースユーザー」を押下する。
③パスワードの入力、及び 「アカウントがロックされています」 のチェックを外し下部の 変更の適用を押下する
Task2 最小サプリメンタルロギング設定
続いてREDOログのサプリメンタルロギング設定を有効化します。
②以下のSQLを実行する。
ALTER PLUGGABLE DATABASE ADD SUPPLEMENTAL LOG DATA;
②確認用SQL
SELECT MINIMAL FROM DBA_SUPPLEMENTAL_LOGGING;
Task3 PKのVALIDATED設定
TBLのPKがVALIDATEDになっていないときのみ実行
※Swing BenchでGGレプリケーションを実行する場合は必要
ALTER TABLE <TABLE_NAME> MODIFY CONSTRAINT <PK_NAME> VALIDATE;
Task4 ATP初期ロード(フルクローン)
③クローン先のVCNを指定し、最後にメールアドレスを入力したらクローンの作成を押下
④クローン中
⑤クローン完了
以上でDBの準備は完了です。
Task5 OCIーGGのプロビジョニング
OCI-GGデプロイメントの作成を行います。
今回の構成ではリージョンごとにデプロイメントを作成する必要があるため2つ作成します。
構成図の以下赤枠のソースGGとターゲットGGを作成していきます。
③一般情報を入力
名前、コンパートメント、OCPU数、GGデプロイメントを配置するサブネット指定
④GoldenGateの詳細を入力
テクノロジ:Oracle Database
GoldenGateインスタンス名:任意
管理者ユーザー名:任意
管理者パスワード:任意
尚、テクノロジはOracle Database以外に以下5つの選択肢がありますので用途に応じたサービスが選択できます。
⑤作成中
⑥SouceGGのプロビジョニングが完了
⑥レプリケーション先のターゲットGGも①~⑤の手順で同様に作成
Task6 認証ユーザーの作成
Reagoin AとRegion BのOCI-GGを接続するための認証ユーザーを作成します。
今回はgguserとします。
①OCIコンソールのGGデプロイメント詳細画面より、コンソールの起動をクリックしURLをコピー
②GGデプロイメントのサブネットに接続できるNW内のブラウザからURLにアクセスしサインイン
③サインインできると管理サービスに遷移する
④管理ページ左上のハンバーガーメニューより、管理者をクリック
⑤ユーザーの右の「+」をクリック
⑥ページ下部に入力フォームが出るので必要な情報を入力し発行をクリック
ユーザー名:<任意>
ロール:演算子 ※英語ではOperatorとなります。
タイプ:パスワード
パスワード:<任意>
⑥これでユーザーの作成が完了
⑦続いてターゲットGG側でもユーザーの作成を行います。
後段の手順でGG接続の作成があります。
その際に作成したユーザー名とパスワードが必要になります。
Task7 DB接続の作成とデプロイメントへの割り当て
構成図の赤枠内、のDBとGGの接続部分を作成していきます。
①OCIコンソールのGoldenGate概要画面から接続を選択し、接続の作成をクリック
②一般情報を入力
名前:<任意>
コンパートメント:<任意>
タイプ:Oracle Autonomous Database
※タイプは接続対象によって選択肢が変わり様々な接続サービスが提供されています。
③詳細情報を入力し、作成をクリック
データベース・ユーザー名:ggadmin
データベース・ユーザー・パスワード:<アンロック時に指定したPW>
同一コンパートメント内に存在するATPならウォレットや接続情報の入力を省略できます。
ウォレットは自動的に取得されます。
④接続の作成が完了したら、 デプロイメントの割り当て をクリックしGGデプロイメントへの割り当てを行う。
⑤デプロイメントを選択し「デプロイメントの割り当て」をクリック
⑥割り当てが完了したら、右部のホットドックメニューから「接続のテスト」を行う
⑦接続のテストが完了
⑧ターゲットGGも同様に接続の作成からデプロイメントへの割り当てを行う。
Task8 GG接続の作成とデプロイメントへの割り当て
Region A とRegion BのGGを連携させるための接続を作成します。
構成図の赤枠、GoldenGate間の連携部分になります。
GGの接続作成はソースGG側のみです。
①事前に接続先のターゲットGGの情報を取得しておきます。
FQDNの取得
TargetGGの編集→デプロイメントの編集→FQDN
Private IPアドレスの取得
ページ右下のプライベートIPアドレス
②ソースGG側のGoldenGate、接続の作成をクリック
③一般情報を入力
名前:<任意>
コンパートメント:<任意>
タイプ:GoldenGate
④接続詳細を入力
チェックボックス:GoldenGate情報の入力
ホスト:<ターゲットGGのFQDN>
ポート:443
ユーザー名:Task6で作成したGG認証用のユーザー
パスワード:Task6で作成したユーザーのパスワード
OCIコンソール上ではユーザー名とパスワードは オプションと補足されていますが 必須 項目として入力してください。
チェックボックス:顧客割り当てサブネット
サブネット:
プライベートIPアドレス:<ターゲットGGのIPアドレス>
ここで選択するサブネットはReagion A とRegion Bが接続されていることが前提で今回はVCNリモートピアリング構成済みであることが必要です。
また、FQDN解決のために双方のVCNに対するプライベートDNSエンドポイント作成の作成が必要です。
③GGの接続の作成が完了したら、DBの割り当てと同じ要領でデプロイメントに割り当てる
接続テストはDBのみ対応であるためGGデプロイメントへの割り当てパートではテストは行いません。
以上でOCIコンソールの構成図上の構築は終了です。
Task9 OCI-GG Extractの作成
いよいよ、OCI-GGのExtractを作成します。
①ソースGGの管理画面のハンバーガーメニューより 構成 をクリック
②DBの接続資格証明がリストされます。アクションの赤枠「データベースへの接続」をクリック
③入力フォームが表示されるので、TRANDATA情報 横の+をクリック
④レプリケーションする対象スキーマを入力し発行をクリック
⑤TRANDATAの検索でスキーマが登録されたことを確認
⑥続いてハートビート横の +を押下し、発行をクリック
⑦発行が完了
⑧Extract の+をクリック
⑨統合Extractを選択し、次へ
⑩Extractの情報を入力 1/3
プロセス名:<任意>
トレイル名:<任意>
⑪Extractの情報を入力 2/3 ソース・データベース資格証明を選択し、次へ
資格証明ドメイン:OracleGoldenGate
資格証明別名:<構成で確認したDB接続資格証明の別名>
⑫Extractの情報を入力 3/3 パラメータを入力し、「作成及び実行」を押下
パラメータ末尾にレプリケーションするスキーマ名(TBL名)を追加する。
Swing BenchのSOEスキーマの場合
TABLE SOE.*;
⑬Extractが正常に作成されたことを確認
Task10 OCI-GG 分散パスの作成
続いて、Reagion AからReagion Bに連携するための 分散パス を作成します。
①ページ右部の + をクリック
②パスの追加情報を入力 1/3
パス名:<任意>
ソース:<作成したExtract名>
トレイルファイル名:<指定したトレイルファイル名>
③パスの追加情報を入力 2/3
ターゲット認証方式:ユーザーID別名
Target Protocol:wss
ターゲット:<ターゲットGGのFQDN>
ポート:443
トレイルファイル名:<指定したトレイルファイル名>
認証情報:<構成にリストされたGGの接続資格証明名>
認証情報別名:<構成にリストされたGGの接続資格証明別名>
③パスの追加情報を入力 3/3
その他はデフォルトで作成及び実行をクリック
④分散パスが正常に発行されたことを確認
⑤連携先のターゲットGGのレシーバサービスにも追加されたことを確認
Task11 OCI-GG Replicatの作成
最後にターゲットGG側でReplicatを作成し、OCI-GGの構築は完了です。
①ターゲットDBの構成を設定するため、ハンバーガーメニューから構成をクリック
②アクションより、データベースへの接続をクリック
③GGADMIのスキーマにチェックポイント表を追加する
表名:GGADMIN.<任意のTBL名>
③ハートビート表の作成を行う
Target Only:有効化
④概要ページ のReplicat 右部の + をクリック
⑤パラレルReplicat → 非統合 を選択し、次へ
⑥Replicat情報を入力 1/2
プロセス名:<任意>
資格証明ドメイン:<構成にリストされたDBの資格証明名>
資格証明別名:<構成にリストされたDBの資格証明別名>
トレイル名:
⑦Replicat情報を入力 2/2
チェックポイント表:<作成したチェックポイント表名>
入力したら次へ
⑧パラメータを入力し、作成及び実行
Extractと同様にレプリケーションするスキーマ(TBL)を指定します。
Swing BenchのSOEスキーマの場合
MAP SOE.*, TARGET SOE.*;
Replicat及びExtractのパラメータはOCI-GGの挙動によってチューニングが必要なポイントになります。
OCI-GGのパラメータは以下のドキュメントを参照しながら行います。
⑨正常にReplicatが構成されたことを確認
以上で、OCI-GG(分散パス)の構築が終了です。
お疲れ様でした。
レプリケーションしてみる
いよいよ、構成したOCI-GGでデータをレプリケーションさせます。
実行前のプロセスを確認します。
ラグが0秒なのが確認できます。
ちなみに、実行する前の統計情報はこんな感じです。
レプリケーションラグを管理するハートビート表の連携しかされていないことがわかります。
それでは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
実行中。。。
レプリケーションが開始されてExtractとReplicatに少しラグが出たようです。
ちゃんとレプリケーションされてる証拠ですね。
今回は5分程度でトランザクションを停止します。
改めて統計情報を見てみると
ちゃんとSwing BenchのSOEスキーマがレプリケーションされたことが確認できます。
トランザクション発行中のラグがどうだったか?
についてはハートビートを参照することで確認できます。
大体5-6秒の間を推移しているようです。
また、Extractの時間が割を占めているように見えます。
今回実施したトランザクションのREDO生成量はおよそ30MB/s程度なので、REDO生成量が増えていくと割合も変化していくと考えられます。
その際はパラメータチューニングが必要になってきますね。
まとめ
いかがでしたでしょうか。
オンプレミス版のOracle GoldenGateと比べて、構築自体は優しくなった印象です。
構築作業のほとんどをOCIコンソールから実施できるのも便利でクラウドサービスらしい特徴かと思います。
この手順が参考になれば幸いです。
参考文献
-
OCI-GGの公式ドキュメント
Oracle Cloud Infrastructure GoldenGateの概要 -
OCI-GGの構築手順
Oracle GoldenGate Microservices Documentation -
OCI-GGのSpeakerdeck
OCI-GoldenGate Overview -
OCI-GGのチュートリアル
401 : OCI GoldenGateによるBaseDBからADBへのデータ連携