すべてのプロダクト
Search
ドキュメントセンター

PolarDB:Paxos マルチレプリカ

最終更新日:Mar 29, 2026

従来の アクティブ/スタンバイ 高可用性 (HA) セットアップでは、フェールオーバー時に人為的な介入が必要であり、データ損失ゼロを保証できません。PolarDB-X Standard Edition は、このモデルを Paxos ベースのマルチレプリカアーキテクチャに置き換えることで、すべてのデプロイモードで Recovery Point Objective (RPO) ゼロと自動 HA スイッチングを実現します。

デプロイモード

PolarDB-X は、さまざまな可用性とディザスタリカバリ要件に合わせて、3 つのデプロイモードをサポートしています。

デプロイモード説明
シングルゾーンすべてのノードを単一のゾーンにデプロイします。開発、テスト、またはゾーンレベルの停止を許容できるワークロードに適しています。
3 つのゾーンリージョン内の 3 つのゾーンにノードをデプロイします。ゾーンレベルの冗長性を必要とする本番ワークロードに適しています。
2 つのリージョンにまたがる 3 つのデータセンター2 つのリージョンにある 3 つのデータセンターにノードをデプロイします。クロスリージョンディザスタリカバリを必要とするミッションクリティカルなシステムに適しています。

これら 3 つのモードはすべて、Paxos コンセンサスを使用して RPO ゼロを保証します。ディザスタリカバリの範囲とネットワークトポロジーに基づいてモードを選択してください。

仕組み

p7947931

マルチノードデータベースクラスターでノードに障害が発生すると、2 つの問題が発生します。処理中の書き込みが失われる可能性があり、クラスターは人為的な介入なしに新しいリーダーを選出する必要があります。コンセンサスアルゴリズムである Paxos は、コミットする前に過半数のノードが各書き込みを承認することを要求し、ハートビートとタイムアウトメカニズムを通じてリーダー選出を自動化することで、両方の問題に対処します。

PolarDB-X Standard Edition クラスターは、シングルリーダーモデルで動作します。

  • リーダーノード:書き込み操作を受け入れる唯一のノードです。フォロワーにログエントリを伝播する前に、バイナリログプロトコルにコンセンサスイベントを追加します。

  • フォロワーノード:多数決に参加し、データを同期します。従来の MySQL リレーログを使用する代わりに、フォロワーノードは MySQL のバイナリログコンテンツを統合する Paxos コンセンサスログを使用します。SQL スレッドはこれらのログをデータファイルにリプレイします。

リーダー選出:フォロワーノードがリーダーが利用不可であることを検出すると、自動的に新しいリーダーを選出します。新しいリーダーは、SQL スレッドが既存のすべてのログをデータファイルにリプレイし終えるまでトラフィックを処理せず、書き込みを再開する前に整合性を確保します。

メリット

メリット仕組み
RPO ゼロ多数決ベースの同期メカニズムにより、コミットされたすべての書き込みが成功する前にノードのクォーラムによって承認されることが保証されます。フェールオーバー時にコミットされたデータが失われることはありません。
自動 HAフォロワーノードはハートビートを介してリーダーを継続的にモニターします。障害発生時には、人為的な介入なしに新しいリーダーを選出し、従来の アクティブ/スタンバイ HA モデルを置き換えます。
高パフォーマンスシングルリーダー書き込みモデルは、MySQL セミシンクレプリケーションに匹敵するパフォーマンスを提供し、データ損失ゼロという追加の保証も提供します。
ヒント: クロスデータセンターフェールオーバー中のリーダー選出効率を向上させるには、同じデータセンター内のレプリカに対してより高い ELECTION_WEIGHT 値を設定して、選出される可能性を高めます。

レプリカステータスの監視

3 つのシステムビューにより、Paxos クラスターをさまざまな詳細レベルで検査できます。

グローバルレプリカ情報のクエリ

クラスター内のすべてのレプリカのステータスを返します。リーダーノードのみが結果を返し、非リーダーノードは行を返しません。

SELECT * FROM INFORMATION_SCHEMA.ALISQL_CLUSTER_GLOBAL;

出力例:

+-----------+------------------+-------------+------------+----------+-----------+------------+-----------------+----------------+---------------+------------+--------------+
| SERVER_ID | IP_PORT          | MATCH_INDEX | NEXT_INDEX | ROLE     | HAS_VOTED | FORCE_SYNC | ELECTION_WEIGHT | LEARNER_SOURCE | APPLIED_INDEX | PIPELINING | SEND_APPLIED |
+-----------+------------------+-------------+------------+----------+-----------+------------+-----------------+----------------+---------------+------------+--------------+
|         1 | 10.0.3.244:14886 |           1 |          0 | Leader   | Yes       | No         |               5 |              0 |             0 | No         | No           |
|         2 | 10.0.3.245:14886 |           1 |          2 | Follower | Yes       | No         |               5 |              0 |             1 | Yes        | No           |
|         3 | 10.0.3.246:14886 |           1 |          2 | Follower | No        | No         |               5 |              0 |             1 | Yes        | No           |
+-----------+------------------+-------------+------------+----------+-----------+------------+-----------------+----------------+---------------+------------+--------------+
3 rows in set (0.00 sec)

主要な列:

列説明
IP_PORTレプリカの IP アドレスとポート
ROLEレプリカのロール: Leader、Follower、または Learner
ELECTION_WEIGHT選出ウェイト。クロスデータセンターディザスタリカバリシナリオに適用可能です。同じデータセンター内のレプリカに対してより高い値を設定して、選出される可能性を高めます。
MATCH_INDEX / NEXT_INDEX / APPLIED_INDEXコンセンサスログのインデックス

ローカルノードステータスのクエリ

ローカルシステムの Paxos ステータスを返します。

SELECT * FROM INFORMATION_SCHEMA.ALISQL_CLUSTER_LOCAL\G

出力例:

*************************** 1. row ***************************
          SERVER_ID: 1
       CURRENT_TERM: 6
     CURRENT_LEADER: 10.0.3.244:14886
       COMMIT_INDEX: 1
      LAST_LOG_TERM: 6
     LAST_LOG_INDEX: 1
               ROLE: Leader
          VOTED_FOR: 1
   LAST_APPLY_INDEX: 0
SERVER_READY_FOR_RW: Yes
      INSTANCE_TYPE: Normal

主要な列:

列説明
CURRENT_LEADER現在のリーダーノードの IP アドレスとポート
ROLEこのノードのロール: Leader、Follower、または Learner
SERVER_READY_FOR_RWこのノードが読み取り/書き込みトラフィックを処理する準備ができているかどうか。リーダー選出中、新しいリーダーはログのリプレイが完了するまで No を返します。
INSTANCE_TYPEレプリカのタイプ。有効な値: Normal および Log

レプリケーションヘルスのクエリ

リーダーと各フォロワー間の同期ステータスを返します。リーダーノードのみが結果を返します。

SELECT * FROM INFORMATION_SCHEMA.ALISQL_CLUSTER_HEALTH;

出力例:

+-----------+------------------+----------+-----------+---------------+-----------------+
| SERVER_ID | IP_PORT          | ROLE     | CONNECTED | LOG_DELAY_NUM | APPLY_DELAY_NUM |
+-----------+------------------+----------+-----------+---------------+-----------------+
|         1 | 10.0.3.244:14886 | Follower | YES       |             0 |              22 |
|         2 | 10.0.3.245:14886 | Leader   | YES       |             0 |               0 |
|         3 | 10.0.3.246:14886 | Follower | YES       |             0 |              11 |
+-----------+------------------+----------+-----------+---------------+-----------------+

主要な列:

列説明
CONNECTEDノードが到達可能で正常に動作しているかどうか
LOG_DELAY_NUMPaxos におけるコンセンサスログの同期遅延。MySQL のリレーログ同期遅延と類似しています。
APPLY_DELAY_NUMフォロワーノード上での Paxos コンセンサスログのリプレイ遅延。MySQL の SQL リレースレッドのリプレイ遅延と類似しています。