1.8.4. MariaDB Galera クラスターのステータスの確認
MariaDB Galera クラスターの健全性、パフォーマンス、同期を監視し、確保することが重要です。そのためには、各ノードのステータス変数をクエリーして、ノードとクラスターを監視できます。
MariaDB Galera クラスターのステータスを確認するには、次のクエリーを使用します。
クラスター内のノードの数を表示します。
# mysql -u root -p -e 'show status like "wsrep_cluster_size";' +--------------------+-------+ | Variable_name | Value | +--------------------+-------+ | wsrep_cluster_size | 4 | +--------------------+-------+ノードのクラスターコンポーネントのステータスを表示します。
# mysql -u root -p -e 'show status like "wsrep_cluster_status";' +----------------------+---------+ | Variable_name | Value | +----------------------+---------+ | wsrep_cluster_status | Primary | +----------------------+---------+wsrep_cluster_status変数の値は、現在のノードが属するクラスターコンポーネントのステータスを示します。可能な値は次のとおりです。-
Primary: クラスターは正常に機能しています。定足数が満たされています。正常なクラスターでは、すべてのノードがPrimaryを報告します。 -
Non-primary: ノードはクラスターのプライマリーコンポーネントへの接続を失い、アクティブクラスターの一部ではなくなりました。ただし、ノードは引き続き読み取りクエリーを処理できますが、書き込み操作を処理することはできません。 -
Disconnected: ノードはどのクラスターコンポーネントにも接続されていません。その結果、クエリーを受け入れることができず、データはレプリケートされません。
-
ノードのステータスを表示します。
# mysql -u root -p -e 'show status like "wsrep_local_state_comment";' +---------------------------+--------+ | Variable_name | Value | +---------------------------+--------+ | wsrep_local_state_comment | Synced | +---------------------------+--------+wsrep_local_state_comment変数の頻繁に使用される値は次のとおりです。-
Synced: ノードはクラスター内で完全に同期されており、レプリケーションにアクティブに参加しています。 -
Desynced: ノードは引き続きクラスターの一部ですが、状態の遷移で主にビジー状態です。 -
Joining: ノードはクラスターへの参加処理中です。 -
Joined: ノードはクラスターに正常に参加しました。クラスターから書き込みセットを受信して適用できます。 -
Donor: ノードは現在、State Snapshot Transfer (SST) を提供しています。新しいノードが参加して完全な状態の遷移が必要な場合、クラスターは既存のノードを選択して必要なデータを送信します。
-
ノードがクラスターからの書き込みセットを受け入れるかどうかを確認します。
# mysql -u root -p -e 'show status like "wsrep_ready";' +---------------+-------+ | Variable_name | Value | +---------------+-------+ | wsrep_ready | ON | +---------------+-------+wsrep_ready変数がONの場合、ノードはコンポーネントを正常に初期化し、クラスターに接続されています。さらに、ノードは同期されているか、クエリーを処理できる状態に達しています。ノードが他のホストとネットワーク接続されているか確認します。
# mysql -u root -p -e 'show status like "wsrep_connected";' +-----------------+-------+ | Variable_name | Value | +-----------------+-------+ | wsrep_connected | ON | +-----------------+-------+ON値は、ノードがクラスター内の少なくとも 1 つのメンバーに接続されていることを意味します。最後の
FLUSH STATUSコマンド以降、またはサーバーの起動以降の書き込みセットのローカル受信キューの平均サイズを表示します。# mysql -u root -p -e 'show status like "wsrep_local_recv_queue_avg";' +----------------------------+-------+ | Variable_name | Value | +----------------------------+-------+ | wsrep_local_recv_queue_avg | 0.012 | +----------------------------+-------+0 に近い値は理想的な状態であり、ノードが書き込みセットを受信するとそれを適用し続けることを示します。値が継続的に高い、または増加している場合は、ディスク I/O が遅いなどのパフォーマンスのボトルネックが発生している可能性があります。
フロー制御ステータスを表示します。
# mysql -u root -p -e 'show status like "wsrep_flow_control_paused";' +---------------------------+-------+ | Variable_name | Value | +---------------------------+-------+ | wsrep_flow_control_paused | 0 | +---------------------------+-------+この変数は、ローカル受信キューがいっぱいでフロー制御がトリガーされたために、ノードが一時停止され、新しい着信トランザクションを処理できない時間の割合を表します。値が 0 に近い場合、ノードはレプリケーションワークロードを効率的に継続していることを示します。値が 1.0 に近づくと、ノードが書き込みセットの適用で頻繁または継続的に問題に遭遇し、クラスターのボトルネックになる可能性があることを意味します。
ノードが頻繁に一時停止する場合は、
/etc/my.cnf.d/galera.cnfファイルのwsrep_slave_threadsパラメーターを調整できます。ノードが並列に適用できる最小シーケンス番号と最大シーケンス番号間の平均距離を表示します。
# mysql -u root -p -e 'show status like "wsrep_cert_deps_distance";' +--------------------------+-------+ | Variable_name | Value | +--------------------------+-------+ | wsrep_cert_deps_distance | 1 | +--------------------------+-------+値が大きいほど、並列度が高くなります。これは、
/etc/my.cnf.d/galera.cnfファイルのwsrep_slave_threadsパラメーターで使用できる最適な値です。