フィジカルスタンバイデータベース機能は、OceanBaseデータベースの高可用性ソリューションにおいて重要な要素です。ユーザーの重要なアプリケーションに対して、高可用性、データ保護、災害復旧といった重要な特性を提供します。
フィジカルスタンバイデータベースの概要
フィジカルスタンバイデータベースは、OceanBase本番データベースの準リアルタイムホットバックアップとして機能します。プライマリデータベースが計画的または計画外(大多数のレプリカ障害)により利用不可能になった場合、スタンバイデータベースがサービスを引き継ぎ、損失なし切り替え(RPO = 0)および損失あり切り替え(RPO > 0)という2種類の災害復旧機能を提供することで、サービス停止時間を最小限に抑え、発生する可能性のあるデータ損失を軽減します。
OceanBaseデータベースでは、V4.1.0以前のバージョンでは、フィジカルスタンバイデータベースはクラスタ単位でのプライマリ/スタンバイ構成でした。クラスタにはプライマリクラスタとスタンバイクラスタの2種類の役割があり、プライマリクラスタ下のすべてのユーザーテナントはプライマリテナント、スタンバイクラスタ下のすべてのユーザーテナントはスタンバイテナントとなります。スタンバイクラスタは、プライマリクラスタのテナント変更操作を自動的に同期します。
V4.1.0以降のバージョンから、フィジカルスタンバイデータベースのプロダクト形態はテナント単位のプライマリ/スタンバイ構成に変更されました。つまり、プライマリまたはスタンバイの役割情報はテナントに属し、プライマリテナントとスタンバイテナントに分かれ、クラスタにはもはやプライマリ/スタンバイの概念はなく、単にテナントを格納するコンテナとなります。プライマリテナントはユーザーが作成する業務用テナントであり、クエリ、DML、DDLなど、完全なデータベースサービス機能をサポートします。一方、スタンバイテナントは災害復旧および読み取り専用サービス機能のみを提供します。1つのプライマリテナントと複数のスタンバイテナントが組み合わさって、テナント単位のフィジカルスタンバイ高可用性ソリューションを構成します。
説明
OceanBaseデータベースはテナント単位でフィジカルスタンバイ機能を提供するため、現行バージョンの製品ドキュメントにおいて、プライマリデータベースとプライマリテナント、スタンバイデータベースとスタンバイテナントは同じ意味を表します。
フィジカルスタンバイデータベースは、主にログ転送サービスとログストレージサービスを通じてログの転送および保存を実現し、ログ再生サービスによってプライマリテナントとスタンバイテナント間のデータ整合性を保証します。具体的には:
ログ転送サービスは、プライマリテナントとスタンバイテナント間でRedoログをリアルタイムで同期します。
現在、OceanBaseデータベースのフィジカルスタンバイは非同期同期モードのみを提供しています。
ログストレージサービスは、フィジカルスタンバイデータベースに対して高可用性・高信頼性のログストレージおよび読み書き機能を提供します。
スタンバイテナントがログストレージサービスに書き込んだログは、ログ再生サービスを通じてリアルタイムまたは遅延してメモリのMemStoreに適用され、プライマリテナントとスタンバイテナントのデータが完全に一致することを保証します。
フィジカルスタンバイデータベースは、OceanBaseデータベースのマルチレプリカに基づく災害復旧ソリューション、アービトレーションに基づく災害復旧ソリューション、物理バックアップ復旧、CDC(Change Data Capture)などの機能と組み合わせて使用することで、顧客の多様なデータ保護および可用性ニーズを満たすことができます。
フィジカル・スタンバイ・データベースのデプロイプラン
フィジカル・スタンバイ・データベースを使用するプランでは、1つのプライマリテナントと1つ以上のスタンバイテナントが含まれることがあります。プライマリテナントは業務に対して読み書きサービスを提供し、スタンバイテナントはRedoログを通じてプライマリテナントに書き込まれたデータをリアルタイムで同期します。
1つのプライマリテナントと対応するスタンバイテナントは、近距離または遠距離にある複数の異なるOceanBaseクラスタにデプロイすることも、同一のOceanBaseクラスタにデプロイすることもできます。同様に、同一のOceanBaseクラスタにはプライマリテナントのみ、スタンバイテナントのみ、または両方を同時に含むことができます。プライマリテナントとスタンバイテナントのテナント名は同一である必要はなく、テナントのリソース仕様、設定、ローカリティなども同一である必要はありません。
さらに、プライマリテナントとスタンバイテナントは単一レプリカのテナントであることも、複数レプリカまたはアービトレーションによる高可用性機能を備えたテナントであることもでき、異なるデプロイ方式によってテナントに異なるレベルのレプリカ障害復旧機能を提供します。
テナントレベルのフィジカル・スタンバイ・データベースはユーザーの利用に大きな柔軟性をもたらします。以下にいくつかの典型的なデプロイシナリオを紹介します。
クラスタにプライマリテナントまたはスタンバイテナントのみ
このデプロイプランでは、ユーザーは複数のOceanBaseクラスタを持ち、各OceanBaseクラスタに含まれる業務テナントはすべてプライマリテナントまたはすべてスタンバイテナントです。
このデプロイプランは最も典型的なデプロイモードであり、ユーザーはフィジカル・スタンバイ・データベース機能を使用して、リモート災害復旧などのさまざまなニーズを満たすことができます。
デプロイアーキテクチャ図は以下のとおりです。

クラスタにプライマリテナントとスタンバイテナントの両方
このデプロイプランでは、ユーザーは複数のOceanBaseクラスタを持ち、各クラスタにはプライマリテナントとスタンバイテナントの両方が存在します。また、クラスタ内のテナントにプライマリテナントのみでスタンバイテナントがない場合も許可されます。
典型的な使用シナリオは以下のとおりです:
業務は2つの異なるリージョンで読み書きとリモート災害復旧のニーズがあるため、2つのリージョンにプライマリデータベースとスタンバイデータベースの両方が必要です。他のデータベースのプライマリ/スタンバイ方式を使用する場合、ユーザーは2つのリージョンにそれぞれ2つ(またはそれ以上)のクラスタをデプロイする必要があり、リージョン間のクラスタは相互にプライマリ/スタンバイとなります。
OceanBaseデータベースのデプロイプランでは、2つのリージョンにそれぞれ1つのクラスタをデプロイするだけで、テナントレベルのプライマリ/スタンバイによって業務ニーズを満たすことができ、データベースクラスタの管理の複雑さを大幅に簡素化します。デプロイアーキテクチャ図は以下のとおりです。

プライマリテナントとスタンバイテナントが同一クラスタ内に存在
このデプロイプランでは、ユーザーは1つのOceanBaseクラスタのみを持ち、プライマリテナントと対応する1つ以上のスタンバイテナントはすべて同一のOceanBaseクラスタ内に存在します。
このデプロイプランを使用するシナリオは以下のとおりです:
ある業務テナントが業務アップグレード前にデータベースのスナップショットを保持する必要があるとします。この場合、同一クラスタ内にリアルタイム同期のスタンバイテナントを作成し、業務のアップグレード操作実行前にそのスタンバイテナントの同期を一時停止することができます。その後、業務はプライマリテナント上で任意の読み書き操作を行うことができます(例えば、業務アップグレードを行うなど)、これらの操作はスタンバイテナントに影響を与えません。その後、業務アップグレードが失敗した場合、現在のプライマリテナントを削除し、スタンバイテナントを新しいプライマリテナントに切り替えることができます(新しいテナント名を元のプライマリテナント名に変更することで、Proxyへのアクセスを変更しないように保証できます)。
デプロイアーキテクチャ図は以下のとおりです。
