第 8 章 使用 Galera 管理数据库复制
Red Hat OpenStack Platform 使用 MariaDB Galera 集群 来管理数据库复制。Pacemaker 将 Galera 服务作为捆绑包集资源运行,该资源管理数据库主/从状态。您可以使用 Galera 测试并验证数据库集群的不同方面,如主机名解析、集群完整性、节点完整性和数据库复制性能。
当您调查数据库集群完整性时,每个节点都必须满足以下条件:
- 节点是正确集群的一部分。
- 节点可以写入集群。
- 节点可以从集群中接收查询和写入命令。
- 节点连接到集群中的其他节点。
- 节点将写入集复制到本地数据库中的表。
8.1. 在 MariaDB 集群中验证主机名解析
要对 MariaDB Galera 集群进行故障排除,首先消除任何主机名解析问题,然后在每个 Controller 节点的数据库中检查 write-set 复制状态。要访问 MySQL 数据库,请在 overcloud 部署期间使用 director 设置的密码。
默认情况下,director 将 Galera 资源绑定到主机名而不是 IP 地址。因此,防止主机名解析(如错误配置或失败 DNS)的任何问题可能会导致 Pacemaker 错误地管理 Galera 资源。
流程
从 Controller 节点,通过运行
hiera
命令获取 MariaDB 数据库 root 密码。$ sudo hiera -c /etc/puppet/hiera.yaml "mysql::server::root_password" *[MYSQL-HIERA-PASSWORD]*
获取节点上运行的 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
从每个节点上的 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
。- 通过检查集群是否报告正确数量,以验证 MariaDB Galera 集群的健康和完整性。