異なる顧客やビジネスシナリオにおける多様なディザスタリカバリニーズを満たすため、OceanBaseデータベースはさまざまな高可用性ソリューションを提供しています。
Paxos一貫性プロトコルに基づくマルチレプリカ高可用性ソリューション
このソリューションはPaxos一貫性プロトコルに基づいて実装されており、通常は同一クラスタ内で複数のレプリカ(例えば、3レプリカまたは5レプリカ)を使用してディザスタリカバリ機能を提供します。
少数派のレプリカが利用不可能な場合(3レプリカクラスタでは1つのレプリカ、5レプリカクラスタでは2つのレプリカの利用不可を許可)、データベースは自動的にディザスタリカバリ切り替えを実行し、サービスを復旧することで、データ損失を防ぎます(RPO = 0)。障害復旧時間は8秒以内です(RTO < 8s)。
ログ非同期複製に基づくフィジカル・スタンバイ・データベースソリューション
このソリューションは、従来のデータベースのプライマリ/スタンバイ複製ソリューションと類似しています。2つ以上のクラスタ間で、テナント単位でRedoログを非同期複製することで、テナントレベルのプライマリ/スタンバイ関係を構築し、計画的な無損失切り替えと障害時の有損切り替えという2種類のディザスタリカバリ機能を提供します。
このソリューションは主に、二重データセンターまたは二重リージョン環境におけるディザスタリカバリニーズを満たすために使用されます。プライマリテナントは読み書き機能を提供し、スタンバイテナントは読み取り専用およびディザスタリカバリ機能を提供します。計画的な無損失切り替えを実行する際、プライマリテナントとスタンバイテナントの役割が入れ替わり、データ損失は発生せず(RPO = 0)、切り替え時間は秒単位です(RTOは秒単位)。
プライマリテナントが存在するクラスタで障害が発生した場合、有損切り替えを実行してスタンバイテナントをプライマリテナントに切り替えることができます。この場合、データ損失を防ぐ保証はありません。RPOは0より大きく、切り替え時間は秒単位です(RTOは秒単位)。
アービトレーションに基づく高可用性ソリューション
このソリューションは、OceanBase V4.1.0バージョンから新たに提供された高可用性ソリューションです。このソリューションは、独立したアービトレーションサービスを導入することで、より少ないレプリカ数でも良好なディザスタリカバリ機能を提供できます。
ここでは、2つのフル機能レプリカと1つのアービトレーションサービスのデプロイアーキテクチャを例として説明します。フル機能レプリカのうち1つが障害を起こした場合、クラスタはアービトレーションサービスの参加のもと、自動的にディザスタリカバリダウングレードを実行し、データ損失を防ぎます(RPO = 0)、切り替え時間は秒単位です(RTOは秒単位)。障害ノードのサービスが回復すると、クラスタは自動的に検出してサービスのアップグレードを実行し、障害前の可用性を回復します。このプロセスにおいて、アービトレーションサービスは少量のメタ情報の同期と永続化のみに参加し、リソース消費(CPU/メモリ/ネットワークなど)は極めて小さいです。
上記の3種類の高可用性ソリューションは組み合わせて使用できます。クラスタの任意のノード(計算、ストレージを含むがこれに限らない)で任意の障害(ネットワーク、ディスクを含むがこれに限らない)が発生した場合、データベースは自動的に切り替えを実行し、データ損失を防ぎます(RPO=0、RTO<=8秒)。OceanBaseデータベースでは、以下のような複数のデプロイモードを推奨しており、ユーザーはデータセンター構成およびパフォーマンスと可用性のニーズに応じて柔軟に選択できます。
| デプロイメントプラン | ディザスタリカバリ能力 | RTO | RPO |
|---|---|---|---|
| 同じデータセンターの3レプリカ | (少数派レプリカ障害時)マシンレベルの無損失ディザスタリカバリ/ラックレベルの無損失ディザスタリカバリ | 8秒以内 | 0 |
| 同じ都市の2データセンターの物理的スタンバイデータベース | (ホストデータセンター障害時)データセンターレベルの損失ありディザスタリカバリ | 数秒 | 0より大きい |
| 同じ都市の3データセンターの3レプリカ | (少数派レプリカ障害時)データセンターレベルの無損失ディザスタリカバリ | 8秒以内 | 0 |
| 2リージョン2データセンターの物理的スタンバイデータベース | (リージョン障害時)損失ありディザスタリカバリ | 数秒 | 0より大きい |
| 2リージョン3データセンターに物理的スタンバイデータベースを追加 | (データセンター障害時)無損失ディザスタリカバリ/(リージョン障害時)損失ありディザスタリカバリ | 数秒 | データセンター障害時、RPO = 0;リージョン障害時、RPOは0より大きい |
| 3リージョン3データセンターの5レプリカ | (リージョン障害時)無損失ディザスタリカバリ | 8秒以内 | 0 |
| 3リージョン5データセンターの5レプリカ | (リージョン障害時)無損失ディザスタリカバリ | 8秒以内 | 0 |
同じデータセンターに3つのレプリカ
データセンターが1つしかない場合でも、3つ以上のレプリカをデプロイすることで、マシンレベルでの損失なき災害復旧を実現できます。単一または少数のサーバーが停止しても、業務サービスに影響はなく、データも損失しません。また、データセンター内に複数のラックがある場合は、各ラックにゾーンをデプロイすることで、ラックレベルでの損失なき災害復旧を実現できます。
同じ都市にある2つのデータセンターによる物理的なスタンバイデータベース
同じ都市に2つのデータセンターしかない場合でも、データセンターレベルの災害復旧機能を実現したい場合は、物理的なスタンバイデータベースを採用し、各データセンターにクラスタをデプロイします。いずれかのデータセンターが利用不可能になった場合、もう一方のデータセンターが業務サービスを引き継ぎます。スタンバイデータセンターが利用不可能になっても、業務データに影響はなく、サービスを継続的に提供できます。ただし、本番データセンターが利用不可能になった場合、スタンバイデータベースを新しい本番データベースとしてアクティブ化し、業務サービスを引き継ぐ必要があります。この際、スタンバイデータベースではすべてのデータの同期が保証されないため、データが損失する可能性があります。
同じ都市にある3つのデータセンターに3つのレプリカ
同じ都市に3つのデータセンターがある場合、各データセンターにゾーンをデプロイすることで、データセンターレベルでの損失なき災害復旧機能を実現できます。いずれかのデータセンターが利用不可能になった場合、残りの2つのデータセンターを使用してサービスを継続し、データは損失しません。このデプロイアーキテクチャは物理的なスタンバイデータベースに依存しませんが、リージョンレベルの災害復旧機能は備えていません。
2つのリージョンに2つのデータセンターと物理的なスタンバイデータベース
ユーザーがリージョンレベルの災害復旧機能を実現したいが、各リージョンにデータセンターが1つしかない場合は、物理的なスタンバイデータベースアーキテクチャを採用し、1つのリージョンをメインリージョンとして本番データベースをデプロイし、もう1つのリージョンにスタンバイデータベースをデプロイします。スタンバイリージョンが利用不可能になっても、メインリージョンの業務サービスに影響はありません。メインリージョンが利用不可能になった場合、スタンバイデータベースを新しい本番データベースとしてアクティブ化し、サービスを継続しますが、この場合業務データが損失する可能性があります。
さらに、ユーザーは2つのリージョンに2つのデータセンターを配置し、2アクティブ/2スタンバイ構成を実現することで、より効率的にリソースを活用し、より高い災害復旧機能を達成できます。
2つのリージョンに3つのデータセンターと物理的なスタンバイデータベース
ユーザーが異なる2つのリージョンに3つのデータセンターを持つ場合、「2つのリージョンに3つのデータセンターと物理的なスタンバイデータベース」のソリューションを使用して、リージョンレベルの災害復旧機能を提供できます。
2つのデータセンターを持つリージョンをメインリージョンと呼び、メインリージョンの2つのデータセンターにそれぞれ1つまたは2つのフル機能レプリカをデプロイし、データベースの読み書きサービスをメインリージョンで提供します。もう1つのリージョンのデータセンターには、アービトレーションサービスと物理的なスタンバイデータベースをデプロイし、災害復旧サービスを提供します。
メインリージョンの1つのデータセンターに障害が発生した場合、アービトレーションプランは自動的にダウングレードを実行し、業務が秒単位で復旧し、データが損失しないようにします。メインリージョンの2つのデータセンターに同時に障害が発生した場合、物理的なスタンバイデータベースを本番データベースとしてアクティブ化してサービスを提供する必要があります。この場合、業務に損失が生じ、RPO > 0となります。
3つのリージョンに3つのデータセンターと5つのレプリカ
リージョンレベルでの損失なき災害復旧をサポートするために、Paxosプロトコルの原理から、少なくとも3つのリージョンが必要であることが証明されています。このソリューションには3つの都市が含まれ、各都市に1つのデータセンターがあります。最初の2つの都市のデータセンターにはそれぞれ2つのレプリカがあり、3つ目の都市のデータセンターには1つのレプリカしかありません。2つのリージョンに3つのデータセンターとの違いは、トランザクションを実行するたびに少なくとも2つの都市に同期する必要があり、業務がリモートレプリケーションの遅延を許容する必要がある点です。
3つのリージョンに5つのデータセンターと5つのレプリカ
3つのリージョンに3つのデータセンターと5つのレプリカと似ていますが、違いは、3つのリージョンに5つのデータセンターでは、各レプリカを異なるデータセンターにデプロイし、データセンターの災害復旧機能をさらに強化している点です。