2.8.4. 检查 MariaDB Galera 集群的状态
监控和确保 MariaDB Galera 集群的健康状态、性能和同步非常重要。为此,您可以在每个节点上查询 status 变量来监控节点和集群。
要检查 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值表示节点已连接到集群中的至少一个成员。显示上次
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参数中使用的最佳值。