第 6 章 使用 Galera 管理数据库复制

Red Hat OpenStack Platform 使用 MariaDB Galera 集群来管理数据库复制。Pacemaker 将 Galera 服务作为管理数据库 master/slave 状态的捆绑包集资源运行。您可以使用 Galera 测试和验证数据库集群的不同方面,如主机名解析、集群完整性、节点完整性和数据库复制性能。

在调查数据库集群完整性时,每个节点都必须满足以下条件:

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

6.1. 在 MariaDB 集群中验证主机名解析

要排除 MariaDB Galera 集群,首先消除任何主机名解析问题,然后检查每个 Controller 节点的数据库中写入设置复制状态。若要访问 MySQL 数据库,请使用 overcloud 部署期间 director 设置的密码。

默认情况下,director 将 Galera 资源绑定到主机名而不是 IP 地址。因此,防止主机名解析的任何问题(如错误配置或失败 DNS)都可能会导致 Pacemaker 错误地管理 Galera 资源。

流程

  1. 从 Controller 节点,通过运行 hiera 命令获取 MariaDB 数据库 root 密码。

    $ sudo hiera -c /etc/puppet/hiera.yaml "mysql::server::root_password"
    *[MYSQL-HIERA-PASSWORD]*
  2. 获取节点上运行的 MariaDB 容器的名称。

    $ sudo podman ps | grep -i galera
    a403d96c5026  undercloud.ctlplane.localdomain:8787/rhosp-rhel8/openstack-mariadb:16.0-106            /bin/bash /usr/lo...  3 hours ago  Up 3 hours ago         galera-bundle-podman-0
  3. 从每个节点上的 MariaDB 数据库获取 write-set 复制信息。

    $ sudo podman exec galera-bundle-podman-0 sudo mysql -B --password="[MYSQL-HIERA-PASSWORD]" -e "SHOW GLOBAL STATUS LIKE 'wsrep_%';"
        +----------------------------+----------+
        | Variable_name              | Value    |
        +----------------------------+----------+
        | wsrep_applier_thread_count | 1        |
        | wsrep_apply_oooe           | 0.018672 |
        | wsrep_apply_oool           | 0.000630 |
        | wsrep_apply_window         | 1.021942 |
        | ...                        | ...      |
        +----------------------------+----------+

    每个相关变量都使用前缀 wsrep

  4. 通过检查集群是否报告正确的节点数来验证 MariaDB Galera 集群的健康状态和完整性。