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 参数中使用的最佳值。

Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

关于红帽文档

Legal Notice

Theme

© 2026 Red Hat
返回顶部