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

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