従来の アクティブ/スタンバイ 高可用性 (HA) セットアップでは、フェールオーバー時に人為的な介入が必要であり、データ損失ゼロを保証できません。PolarDB-X Standard Edition は、このモデルを Paxos ベースのマルチレプリカアーキテクチャに置き換えることで、すべてのデプロイモードで Recovery Point Objective (RPO) ゼロと自動 HA スイッチングを実現します。
デプロイモード
PolarDB-X は、さまざまな可用性とディザスタリカバリ要件に合わせて、3 つのデプロイモードをサポートしています。
| デプロイモード | 説明 |
|---|---|
| シングルゾーン | すべてのノードを単一のゾーンにデプロイします。開発、テスト、またはゾーンレベルの停止を許容できるワークロードに適しています。 |
| 3 つのゾーン | リージョン内の 3 つのゾーンにノードをデプロイします。ゾーンレベルの冗長性を必要とする本番ワークロードに適しています。 |
| 2 つのリージョンにまたがる 3 つのデータセンター | 2 つのリージョンにある 3 つのデータセンターにノードをデプロイします。クロスリージョンディザスタリカバリを必要とするミッションクリティカルなシステムに適しています。 |
これら 3 つのモードはすべて、Paxos コンセンサスを使用して RPO ゼロを保証します。ディザスタリカバリの範囲とネットワークトポロジーに基づいてモードを選択してください。
仕組み

マルチノードデータベースクラスターでノードに障害が発生すると、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_NUM | Paxos におけるコンセンサスログの同期遅延。MySQL のリレーログ同期遅延と類似しています。 |
APPLY_DELAY_NUM | フォロワーノード上での Paxos コンセンサスログのリプレイ遅延。MySQL の SQL リレースレッドのリプレイ遅延と類似しています。 |