PolarDB-X の高可用性アーキテクチャは RPO=0 を達成します。このトピックでは、PolarDB-X が高可用性を実装する技術原理について説明します。
技術的な原理
PolarDB-X は、マルチレプリカデータアーキテクチャ (3 レプリカまたは 5 レプリカなど) を使用します。レプリカ間の強整合性 (RPO=0) を確保するために、各書き込み操作で過半数のノードからの確認応答を必要とする Paxos マジョリティレプリケーションプロトコルが使用されます。1 つのノードに障害が発生しても、クラスターは引き続き正常にサービスを提供できます。Paxos アルゴリズムはレプリカ間の強整合性を保証し、レプリカの不整合の問題を完全に排除します。
PolarDB-X では、データレプリカはデータステートマシンの状態に基づいて、Normal と Logger の 2 種類に分類されます。これに加えて、レプリケーショングループ内のレプリカは、投票と選出への参加の有無に基づき、さらに以下のロールに分類されます:
|
レプリカロール |
ロールタイプ |
説明 |
|
リーダー |
ノーマル |
リーダーは、クライアントリクエストの処理と意思決定を担当します。リーダーは、データの整合性と回復可能性を確保するためにログを保持します。 |
|
フォロワー |
ノーマル |
フォロワーは、リーダーからの指示を受け入れて実行します。リーダーに障害が発生した場合、またはアクセスできなくなった場合、フォロワーが新しいリーダーとして選出されます。 |
|
ロガー |
ロガー |
ロガーは、フォロワーのロールと似ており、データサービスを提供せずに多数決プロトコルサービスのみを提供します。リーダーに障害が発生した場合、またはアクセスできなくなった場合、ロガーはリーダー選出の投票に参加し、一時的にリーダーとして選出される可能性があります。ただし、データサービスは提供しません。他の多数派のフォロワーレプリカがログの同期を完了すると、ロガーは自発的にリーダーロールを放棄します。 |
|
ラーナー |
ノーマル |
ラーナーは、システム状態情報を受動的に受信することしかできず、投票や意思決定に参加できないため、システムへの影響を回避できます。 |
プライマリインスタンスと読み取り専用インスタンス

-
プライマリインスタンス DN:2 つのデータレプリカ (ノーマル) + 1 つのログレプリカ (ロガー) で構成されます。ログレプリカ (ロガー) はログのみを保存し、データを保存しないため、必要なリソースは非常に少なくなります。したがって、この 3 レプリカ構成は、従来のプライマリ-スタンバイ 2 レプリカアプローチに近いコストを実現できます。
-
読み取り専用インスタンス DN:ラーナーロールに基づく 1 つのデータレプリカを使用して、プライマリインスタンスからデータを非同期的に同期します。Paxos プロトコルの投票と意思決定には参加しません。したがって、読み取り専用インスタンスの障害はプライマリインスタンスに影響を与えず、読み取り専用インスタンスのフォールトアイソレーション要件を満たします。
高可用性ディザスタリカバリ
PolarDB-X は、Paxos マルチレプリカアーキテクチャに基づき、プライマリインスタンスの DN に対して複数の災害復旧構成を提供します:
|
デプロイメントモード |
レプリカ戦略 |
ディザスタリカバリ能力 |
|
単一ゾーン |
3 レプリカ (2 つのデータレプリカ + 1 つのログレプリカ) |
|
|
3 ゾーン |
3 レプリカ (2 つのデータレプリカ + 1 つのログレプリカ) |
|
|
地理的冗長性 (2 リージョン、3 データセンター) |
5 レプリカ (5 つのデータレプリカ) |
|
PolarDB-X は、プライマリインスタンス DN の災害復旧設定に応じて、読み取り専用インスタンス DN の設定を調整します:
|
プライマリインスタンスのデプロイメントモード |
読み取り専用インスタンスのレプリカ戦略 |
|
単一ゾーン |
1 レプリカ。リージョンはプライマリインスタンスと同じである必要がありますが、ゾーンは異なっていても構いません。 |
|
3 ゾーン |
|
|
地理的冗長性 (2 リージョン、3 データセンター) |
1 レプリカ。リージョンはプライマリインスタンスのプライマリリージョンと同じである必要がありますが、ゾーンは異なっていても構いません。 |
高可用性の例:
