3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

ExaDB-XSの新機能「Automatic Failover(FSFO)」を試す - その1:有効化

3
Posted at

はじめに

Oracle Exadata Database Service on Exascale Infrastructure(ExaDB-XS)で、Oracle Data Guardの自動フェイルオーバー機能が利用できるようになりました。

Oracle Data Guardは、プライマリ・データベースで発生した変更履歴(Redo)をスタンバイ・データベースへ転送・適用し、障害に備える仕組みです。Automatic Failoverを有効にすると、OCI管理のObserverがプライマリとスタンバイを監視し、障害条件を満たした場合に、Data GuardのFast-Start Failoverによってスタンバイを自動昇格させます。

通常時はPからSへRedoが転送されます。Pが利用不可と判断されると、ObserverがFSFOを通じてSを新しいプライマリへ昇格させます。

本記事では、既存のData Guard GroupにAutomatic Failoverを有効化し、DGMGRLで設定状態を確認するところまでを記録します。実際の障害模擬と自動昇格の検証は、次の記事で扱います。

本記事の構成はMaximum Performance / ASYNCです。非同期転送はプライマリ性能への影響を抑えやすい一方、障害時に未転送のRedoがある場合はデータ損失の可能性があります。

今回の構成

項目 内容
サービス Oracle Exadata Database Service on Exascale Infrastructure(ExaDB-XS)
Data Guardリソース Data Guard Group
データベース・バージョン Oracle AI Database 26ai 23.26.3.0.0
プライマリ P(Oracle RAC、2インスタンス)
スタンバイ S(Physical Standby、Oracle RAC、2インスタンス)
保護モード Maximum Performance
Redo転送方式 ASYNC

Physical Standbyは、プライマリの物理コピーを維持するスタンバイ・データベースです。今回はPとSのどちらもOracle RAC構成で、各2インスタンスが稼働しています。

有効化前の確認

Automatic Failoverを有効にする前に、Data Guardが正常に同期していることを確認します。Redo転送や適用にエラーがある状態では、後続のフェイルオーバー試験の結果を正しく判断しにくくなるためです。

データベース・ノードへoracleユーザーでログインし、対象データベースの環境変数を読み込んでから、Data Guard Brokerの管理ツールであるDGMGRLを起動します。

. Primary.env
dgmgrl /

次に、Broker構成、各データベースの状態、フェイルオーバー準備状況を確認します。

show configuration verbose;
show database verbose P;
show database verbose S;
validate database verbose P;
validate database verbose S;
show fast_start failover;

今回、有効化前に確認できた主な状態は以下のとおりです。

  • Broker Configuration Status: SUCCESS
  • PはPRIMARY
  • SはPHYSICAL STANDBY
  • SのRedo ApplyはRunning
  • Apply Lag: 0 seconds
  • Transport Lag: 0 seconds
  • Ready for Failover: Yes (Primary Running)
  • Flashback Database: P / SともにOn
  • FSFO: Disabled

特にvalidate database verbose S;で、スタンバイSがフェイルオーバー可能な状態であること、Redo Applyが実行中であること、転送遅延と適用遅延が許容範囲であることを確認します。

OCIコンソールでAutomatic Failoverを有効化する

今回は、すでに作成済みのData Guard Groupを対象にしました。

  1. OCIコンソールで Oracle Exadata Database Service on Exascale Infrastructure を開く
  2. 対象のExadata VM Clusterを開く
  3. プライマリ・データベース P を選択する
  4. Data Guard Group タブを開く
  5. スタンバイ S をフェイルオーバー・ターゲットとして設定する
  6. Automatic Failover を有効化する
  7. 最大データ損失しきい値を選択して保存する

image.png

フェイルオーバー・ターゲットは、プライマリ障害時に自動昇格の候補となるスタンバイです。複数スタンバイの構成では優先順位を設定できますが、今回はSを唯一のターゲットとしました。

今回選択した設定は以下です。

設定項目
Automatic Failover 有効
Failover Target S
Maximum data loss threshold Custom threshold
Protection Mode Maximum Performance
Redo Transport Type Asynchronous

最大データ損失しきい値には、主に次の選択肢があります。

  • 0 seconds
    Maximum Availabilityと同期(SYNC)転送を使用します。コミット済みトランザクションを保護するゼロデータロス構成ですが、ネットワーク遅延が性能に影響する場合があります。

  • Custom threshold
    Maximum Performanceと非同期(ASYNC)転送を使用します。性能への影響を抑えやすい一方、障害時には未転送Redoの範囲でデータ損失が発生する可能性があります。

Oracle公式ドキュメントでは、Automatic Failover有効時、プライマリ・データベースが利用不可になるとOracleがスタンバイへのフェイルオーバーを自動的に開始すると説明されています。また、フェイルオーバー・ターゲットにはプライマリと同一リージョンのスタンバイを使用することが推奨されています。
Oracle Exadata Database Service on Exascale InfrastructureでのOracle Data Guardの使用

有効化後の確認

OCIコンソールで設定した後、DGMGRLでFSFO、Observer、フェイルオーバー・ターゲットを確認します。

show configuration verbose;
show fast_start failover;
show observer;
show database verbose P;
show database verbose S;
validate database verbose S;

今回の出力では、以下を確認できました。

Fast-Start Failover: Enabled in Potential Data Loss Mode
  Lag Limit:          30 seconds
  Lag Type:           transport
  Threshold:          30 seconds
  Active Target:      S
  Potential Targets:  "S"
    S                 valid
  Observer:           primary-5k524-1787101929052
  Shutdown Primary:   TRUE
  Auto-reinstate:     TRUE
  Lag Grace Time:     6 seconds

Enabled in Potential Data Loss Modeは、今回の構成がMaximum Performance / ASYNCであることを示す表示です。設定エラーではありません。

確認項目 期待する状態
Configuration Status SUCCESS
Fast-Start Failover Enabled
Active Target S
Potential Targets Sがvalid
Observer Masterとして表示される
SのApply State Running
Apply / Transport Lag 許容範囲内
Ready for Failover Yes

Auto-reinstate: TRUEは、フェイルオーバー後に旧プライマリをスタンバイへ戻す自動復旧を有効にする設定です。ただし、フェイルオーバーが成功することと、旧プライマリへのRedo適用まで完了してBroker構成が完全に正常収束することは別々に確認する必要があります。

有効化前後の差分

項目 有効化前 有効化後
FSFO Disabled Enabled in Potential Data Loss Mode
Active Target なし S
Observer なし OCI管理Observer
Lag Type APPLY transport
Lag Grace Time 0秒 6秒
Auto-reinstate TRUE TRUE
Shutdown Primary TRUE TRUE

image (58).png

まとめ

ExaDB-XSのAutomatic Failoverは、Data Guardの監視とフェイルオーバーのオーケストレーションをOCIが担う新機能です。

  • Data Guardの同期状態とFailover Readinessを確認してから有効化した
  • OCIコンソールでSをフェイルオーバー・ターゲットとして設定した
  • 有効化後、DGMGRLでFSFO、Observer、ターゲットの状態を確認した
  • Maximum Performance / ASYNCではEnabled in Potential Data Loss Modeと表示される
  • ゼロデータロスを要件とする場合は、Maximum Availabilityと同期転送を前提に設計する必要がある

次回は、プライマリPのRAC全インスタンスを停止して障害を模擬し、手動のFAILOVER TOを実行せずにSが自動昇格するかを検証します。

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?