フィジカルスタンバイデータベース機能は、OceanBaseデータベースの高可用性ソリューションにおいて重要な要素です。これにより、ユーザーの重要なアプリケーションに対して、高可用性、データ保護、災害復旧といった重要な特性を提供できます。
フィジカルスタンバイデータベースは、OceanBaseデータベースの本番データベースクラスタの準リアルタイムホットバックアップです。計画的な切り替えが必要な場合や、障害によりプライマリデータベースクラスタがサービスを提供できなくなった場合に、フィジカルスタンバイデータベースをプライマリデータベースに切り替えることで、サービス停止時間を短縮し、データ損失を最小限に抑えることができます。
フィジカルスタンバイデータベースは、OceanBaseデータベースのマルチレプリカに基づく災害復旧ソリューション、アービトレーションに基づく災害復旧ソリューション、物理的バックアップ・リカバリ、CDCなどの機能と組み合わせて使用することで、顧客の多様なデータ保護および可用性ニーズを満たすことができます。
また、災害復旧ニーズに加えて、OceanBaseデータベースのユーザーはフィジカルスタンバイデータベースを利用して、バックアップ・リカバリ、CDC、APクエリなど、大量のリソースを消費する可能性のあるタスクを実行することができます。これにより、プライマリデータベースへの負荷を軽減し、データベースサービス全体の可用性と安定性を向上させることができます。
フィジカル・スタンバイ・データベースの構成
OceanBaseデータベースは、単一クラスタに複数のテナントを配置する設計を採用しており、テナントごとにリソースを分離することで、各業務が他のインスタンスの存在を意識せずにデータベースサービスを利用できるようにしています。また、権限管理によりテナントデータの安全性を確保します。OceanBaseデータベースのテナント機能の詳細については、マルチテナントアーキテクチャの概要を参照してください。
V4.1.0以降のバージョンから、OceanBaseデータベースはテナント単位でフィジカル・スタンバイ・データベース機能を提供しています。これにより、プライマリまたはスタンバイの役割情報はクラスタレベルではなく、テナントレベルに属します。特に断りのない限り、本記事における「プライマリデータベース」と「プライマリテナント」、「スタンバイデータベース」と「スタンバイテナント」は同じ意味で使用されます。
フィジカル・スタンバイ・データベースを使用する構成では、1つのプライマリテナントと1つ以上のスタンバイテナントが含まれます。プライマリテナントは業務に対して読み書きサービスを提供し、スタンバイテナントはRedoログを通じてプライマリテナントに書き込まれたデータをリアルタイムで同期します。
プライマリテナントと対応するスタンバイテナントは、近距離または遠距離にある複数の異なるOceanBaseクラスタに配置することも、同一OceanBaseクラスタ内に配置することも可能です。同じOceanBaseクラスタ内には、プライマリテナントのみ、スタンバイテナントのみ、または両方を同時に含むことができます。プライマリテナントとスタンバイテナントのテナント名は同一である必要はなく、テナントのリソース仕様、構成、ローカリティなども必ずしも同一である必要はありません。
プライマリテナントとスタンバイテナントは、単一レプリカのテナントである場合も、複数レプリカを持つテナントである場合も、またはアービトレーションによる高可用性機能を利用するテナントである場合もあります。異なるデプロイメント方式によって、テナントに対して異なるレベルのレプリカ障害復旧機能が提供されます。
フィジカル・スタンバイ・データベースの主要コンポーネント
以下の図は、プライマリテナントとスタンバイテナントを含むフィジカル・スタンバイ・データベースのユースケースを例として、フィジカル・スタンバイ・データベースに含まれる主要コンポーネントを示しています。

ログ転送サービス(LOG Transport Service)
フィジカル・スタンバイ・データベースは、ログ転送サービスを通じてプライマリテナントとスタンバイテナント間でRedoログをリアルタイムで同期します。特に、プライマリテナントはスタンバイテナントに対して積極的にログをプッシュすることはなく、スタンバイテナントがプライマリテナントからログをプルすることに依存します。
ログ転送サービスは、ログ位置情報の自動アドレッシング、ログの遅延処理、プライマリテナントが属するクラスタノードの障害などの高可用性問題を処理します。スタンバイテナントは、プライマリテナントのログアーカイブサービスを通じてログを取得することも、ネットワーク経由で直接プライマリテナントが属するクラスタに接続してログを取得することもできます。
ログストレージサービス(Log Storage Service)
ログストレージサービスは、フィジカル・スタンバイ・データベースに高可用性と高信頼性を備えたログストレージおよび読み書き機能を提供します。ログストレージサービスは単一レプリカである場合も、複数レプリカを持ちPaxosプロトコルを使用して高可用性を実現する場合もあります。
プライマリテナントとスタンバイテナントのログストレージサービスは、2種類の全く異なる動作モードを使用します。プライマリテナントでは追加モード(Append mode)が提供され、トランザクションやDDLなどの上位モジュールによって書き込まれたデータを受信します。一方、スタンバイテナントではRaw Writeモードが提供され、ログ転送サービスを通じて他のテナントまたはログアーカイブから取得したログのみの書き込みが許可されます。
ログ再生サービス(Log Replay Service)
スタンバイテナントがログストレージサービスに書き込んだログは、ログ再生サービスを通じてリアルタイムまたは遅延してメモリのMemstoreに適用され、これによりプライマリテナントとスタンバイテナントのデータが完全に一致することを保証します。
ロールトランジション(Role Transitions)
フィジカル・スタンバイ・データベースは、以下の2種類のロールトランジション方式を提供します:
Switchover
Switchoverは、プライマリテナントとスタンバイテナント間で実行される無損失切り替えです。これは通常、業務計画内の切り替えシナリオで使用され、
RPO = 0、RTOは秒単位となります。Switchoverを実行する際、プライマリテナントはスタンバイテナントに切り替わり、同時に指定されたスタンバイテナントがプライマリテナントに切り替わります。Failover
Failoverは、プライマリテナントに障害が発生した場合やその他の理由によりサービス提供が不可能になった場合に使用されます。ユーザーはスタンバイテナントを選択してFailoverを実行することができ、実行後、対応するスタンバイテナントがプライマリテナントに切り替わります。Failoverは損失が伴うものであり、ログの同期が正常で顕著な遅延がない場合、RPOは秒単位(スタンバイテナントの実際の遅延状況による)、RTOも秒単位となります。
同期方式
V4.x系では、OceanBaseデータベースのフィジカル・スタンバイ・データベースは非同期同期モードのみを提供します。
フィジカル・スタンバイ・データベースに関連するその他の技術
OceanBaseデータベースは、お客様のさまざまなシナリオに対応するため、多様な災害復旧ソリューションを提供しています。フィジカル・スタンバイ・データベースはその一つであり、他の複数のソリューションと組み合わせて使用することも可能です。
マルチレプリカに基づく災害復旧ソリューション
OceanBaseデータベースは、Paxosプロトコルに基づいてマルチレプリカ災害復旧ソリューションを実装しており、少数派の障害発生時においてもRPO = 0、RTO < 8sという高可用性をお客様に提供します。
このソリューションでは、多数派またはすべてのレプリカが障害を起こした場合、外部へのサービス提供が不可能になります。また、Paxosプロトコルの特性上、業務が都市間での災害復旧機能を必要とする場合、ログを都市間で同期する必要があるため、トランザクションの実行遅延が増大します。
フィジカル・スタンバイ・データベースは、このソリューションの重要な補完要素であり、メインクラスタの多数派またはすべてのレプリカが障害を起こした場合の業務可用性問題を解決します。
アービトレーションに基づく災害復旧ソリューション
アービトレーションに基づく災害復旧ソリューションは、OceanBaseデータベースがPaxosマルチレプリカ災害復旧ソリューションを基盤として革新的に提供する高可用性ソリューションです。
業務効果として、アービトレーションソリューションは、多数派レプリカ(4つのフル機能レプリカ+1つのアービトレーションサービス)またはすべてのレプリカ(2つのフル機能レプリカ+1つのアービトレーションサービス)上での強力な同期を保証し、フル機能レプリカの半数が障害を起こした場合に自動的に障害ダウングレードを行い、データ損失を防ぎながら業務の継続的な可用性を確保します。
このソリューションは同時に、従来のデータベースの最大保護または最大可用性ソリューションにおいて、業務サービスの連続性とデータの整合性を両立させることができないという問題を解決し、ブレインリープリスクを回避します。また、ユーザーのローカリティ設定に基づき、複数のフル機能レプリカが存在するデータベースノード上で読み書きサービスを提供することができます。
一方、多数派に基づく災害復旧ソリューションと同様に、アービトレーションに基づく災害復旧ソリューションもクラスタ内のソリューションであり、多数派またはすべてのレプリカが障害を起こした場合のデータ保護および可用性の問題を解決することはできません。同時に、レプリカ間でのログの強力な同期によって生じる遅延問題も考慮する必要があります。
アービトレーションサービスの詳細については、アービトレーションによる高可用性ソリューションを参照してください。
CDC
CDC(Change Data Capture、変更データキャプチャ)とは、データベース内のデータ変更をキャプチャし記録するための技術です。データベース内のデータに変更が生じた場合(例えば、データの挿入、更新、削除など)、CDC技術は変更が発生した順序に従って変更をキャプチャし記録します。これにより、他のシステムがこれらの最新データを適時処理および利用できるようになります。
CDC技術を使用することで、OceanBaseクラスタ内のすべてのデータベース変更操作をトランザクション単位でDML/DDLに変換し、別のクラスタで再実行することができます。そのため、CDC技術に基づいて「論理スタンバイデータベース」を構築することが可能です。
CDC技術を用いて構築された「論理スタンバイデータベース」は、リソース消費量が多く、Redoログ同期に基づいて構築されたフィジカル・スタンバイ・データベースと比較して実行効率が低いという点があります。そのため、OceanBaseデータベースではフィジカル・スタンバイ・データベースのソリューションをより推奨しています。
CDCに関する詳細は、CDCの概要を参照してください。