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

ログ転送サービス(LOG Transport Service)
物理スタンバイデータベースは、ログ転送サービスを通じてプライマリテナントとスタンバイテナント間でRedoログをリアルタイムに同期します。特に、プライマリテナントからスタンバイテナントへのログのプッシュは行われず、スタンバイテナントがプライマリテナントからログをプルすることに依存します。
ログ転送サービスは、ログ位置情報の自動アドレッシング、ログの遅延処理、プライマリテナントが存在するクラスタノードの障害などの高可用性問題を処理します。スタンバイテナントは、プライマリテナントのログアーカイブサービスからログを取得することも、ネットワークを直接接続してプライマリテナントが存在するクラスタからログを取得することもできます。
ログストレージサービス(Log Storage Service)
ログストレージサービスは、物理スタンバイデータベースに高可用性・高信頼性のログストレージおよび読み書き機能を提供します。ログストレージサービスは、単一レプリカでも、複数レプリカでPaxosプロトコルを使用して高可用性を実現する形式でも構いません。
プライマリテナントとスタンバイテナントのログストレージサービスは、全く異なる2つの動作モードを提供します。プライマリテナントではAppendモードを提供し、トランザクションやDDLなど上位モジュールから書き込まれたデータを受信します。スタンバイテナントではRaw Writeモードを提供し、ログ転送サービスから他のテナントやログアーカイブから取得したログのみの書き込みを許可します。
ログ再生サービス(Log Replay Service)
スタンバイテナントがログストレージサービスに書き込んだログは、ログ再生サービスを通じてメモリ内のMemStoreにリアルタイムまたは遅延して適用されるため、プライマリテナントとスタンバイテナントのデータが完全に一致します。
役割切り替え(Role Transitions)
物理スタンバイデータベースは、以下の2種類の役割切り替え方式を提供します:
スイッチオーバー(Switchover)
スイッチオーバーは、プライマリテナントとスタンバイテナント間で実行される無損失切り替えです。これは通常、業務計画内の切り替えシナリオで使用され、
RPO = 0、RTOは秒単位を保証します。スイッチオーバー実行時、プライマリテナントはスタンバイテナントに切り替わり、同時に指定されたスタンバイテナントがプライマリテナントに切り替わります。フェイルオーバー(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 の概要を参照してください。