MariaDB 指南

Kolla Ansible 支持部署 MariaDB/Galera 集群,供 OpenStack 和其他服务使用。

MariaDB 分片

数据库分片,或简称分片,是数据库或搜索引擎中数据的水平分区。每个分片都存储在单独的数据库服务器/集群上,以分散负载。某些数据在所有分片中都存在,但有些数据仅出现在单个分片中。每个分片充当此子数据集的唯一来源。

Kolla 支持在服务的数据库级别进行分片,因此每个数据库都可以托管在不同的分片上。每个分片都实现为独立的 Galera 集群。

本节解释如何配置多个数据库分片。目前,只有通过 HAProxy 负载均衡器可访问的一个分片,并受 kolla-ansible mariadb_backup 命令的支持。未来将通过使用 ProxySQL 来改进,从而实现对所有分片的负载均衡访问。

部署

每个分片由一个整数 ID 标识,由 mariadb_shard_id 定义。默认分片由 mariadb_default_database_shard_id (默认值为 0) 定义,它标识可以通过 HAProxy 访问并可用于备份的分片。

为了部署多个 MariaDB 集群,您需要按照以下方式编辑清单文件

[mariadb]
server1ofcluster0
server2ofcluster0
server3ofcluster0
server1ofcluster1 mariadb_shard_id=1
server2ofcluster1 mariadb_shard_id=1
server3ofcluster1 mariadb_shard_id=1
server1ofcluster2 mariadb_shard_id=2
server2ofcluster2 mariadb_shard_id=2
server3ofcluster2 mariadb_shard_id=2

注意

如果清单文件中未为主机定义 mariadb_shard_id,则它将自动设置为 mariadb_default_database_shard_id (默认值为 0),该值来自 group_vars/all/mariadb.yml,并且可以在 /etc/kolla/globals.yml 中覆盖。正如以下所述,在备份或负载均衡的情况下,标记为默认分片的分片是特殊的。

负载均衡器

Kolla 目前仅支持默认分片的负载均衡。未来将通过用 ProxySQL 替换 HAProxy 来改变这一点。这导致了如下所述的某些限制。

备份和恢复

备份和恢复仅适用于默认分片,因为 kolla 当前使用 HAProxy 解决方案作为 MariaDB 负载均衡器,它是一个简单的 TCP,并且仅将默认分片主机配置为后端,因此备份脚本只能在 kolla_internal_vip_address 上访问默认分片。