第 6 章 使用 Galera


在高可用性部署中,Red Hat OpenStack Platform 使用 MariaDB Galera 集群 来管理数据库复制。如 第 4.3 节 “在 Pacemaker 中配置 OpenStack 服务” 所述,Pacemaker 使用 Master/Slave Set 资源运行 Galera 服务。您可以使用 pcs status 检查 galera-master 是否在运行,以及哪些控制器:

Master/Slave Set: galera-master [galera]
     Masters: [ overcloud-controller-0 overcloud-controller-1 overcloud-controller-2 ]
Copy to Clipboard Toggle word wrap
主机名解析
在对 MariaDB Galera 集群进行故障排除时,请先验证 主机名解析。默认情况下,director 将 Galera 资源绑定到 主机名而不是 IP 地址 [1].因此,防止主机名解析(例如,错误配置或失败的 DNS)的任何问题可能会阻止 Pacemaker 正确管理 Galera 资源。

排除主机名解析问题后,检查集群本身的完整性。为此,请检查每个 Controller 节点数据库上的 write-set 复制 状态。

写入集复制信息存储在每个节点的 MariaDB 数据库中。每个相关变量都使用前缀 wsrep_。因此,您可以直接通过数据库客户端查询此信息:

$ sudo mysql -B -e "SHOW GLOBAL STATUS LIKE 'wsrep_%';"
    +------------------------+-------+
    | Variable_name          | Value |
    +------------------------+-------+
    | wsrep_protocol_version | 5     |
    | wsrep_last_committed   | 202   |
    | ...                    | ...   |
    | wsrep_thread_count     | 2     |
    +------------------------+-------+
Copy to Clipboard Toggle word wrap

要验证 MariaDB Galera 集群 的健康状况和完整性,请首先检查集群是否报告正确数量的节点。然后,检查是否每个节点:

  • 是正确集群的一部分
  • 可以写入集群
  • 可以从集群接收查询和写入
  • 连接到集群中的其他人
  • 将 write-sets 复制到本地数据库中的表

以下部分讨论如何调查每个状态。

6.1. 检查数据库集群完整性

在调查 MariaDB Galera 集群的问题时,从集群本身的完整性开始。验证集群完整性涉及检查每个 Controller 节点上的特定 wsrep_ 数据库变量。要检查数据库变量,请运行:

$ sudo mysql -B -e "SHOW GLOBAL STATUS LIKE 'VARIABLE';"
Copy to Clipboard Toggle word wrap

VARIABLE 替换为您要检查的 wsrep_ 数据库变量。例如,查看节点的 集群状态 UUID

$ sudo mysql -B -e "SHOW GLOBAL STATUS LIKE 'wsrep_cluster_state_uuid';"
    +--------------------------+--------------------------------------+
    | Variable_name            | Value                                |
    +--------------------------+--------------------------------------+
    | wsrep_cluster_state_uuid | e2c9a15e-5485-11e0-0800-6bbb637e7211 |
    +--------------------------+--------------------------------------+
Copy to Clipboard Toggle word wrap

下表列出了与集群完整性相关的不同 wsrep_ 数据库变量。

Expand
表 6.1. 用于检查集群完整性的数据库变量
变量Summary描述

wsrep_cluster_state_uuid

集群状态 UUID

节点所属集群的 ID。所有节点都必须具有相同的 ID。具有不同 ID 的节点没有连接到集群。

wsrep_cluster_size

集群中的节点数

您可以在任何单一节点上检查它。如果该值小于实际节点数,则某些节点失败或丢失连接。

wsrep_cluster_conf_id

集群更改总数

确定集群是否被分成多个组件,也称为 分区。这可能导致网络故障造成的。所有节点必须具有相同的值。

如果某些节点报告了不同的 wsrep_cluster_conf_id,请检查其 wsrep_cluster_status 值,以查看它是否仍然可以写入集群()。

wsrep_cluster_status

主要组件状态

决定节点是否仍然可以写入集群。如果是这样,则 wsrep_cluster_status 应为 Primary。任何其它值表示该节点是无法正常运行的分区的一部分。



[1] 此方法实施为允许 Galera 在使用 IPv6 的 overcloud 中成功启动(特别是为了解决 BZ data98671)。
返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

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

關於紅帽

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

Theme

© 2025 Red Hat