Files
compose-anything/src/mariadb-galera/README.zh.md
Sun-ZhenXing 3c609b5989 feat: add more
2025-10-06 21:48:39 +08:00

2.6 KiB
Raw Blame History

MariaDB Galera 集群

English | 中文

此服务用于部署 3 节点 MariaDB Galera 集群,提供高可用性和同步多主复制。

服务

  • mariadb-galera-1: 第一个 MariaDB Galera 节点(引导节点)。
  • mariadb-galera-2: 第二个 MariaDB Galera 节点。
  • mariadb-galera-3: 第三个 MariaDB Galera 节点。

环境变量

变量名 说明 默认值
MARIADB_VERSION MariaDB 镜像版本 11.7.2
MARIADB_ROOT_PASSWORD root 用户密码 galera
MARIADB_GALERA_CLUSTER_NAME Galera 集群名称 galera_cluster
MARIADB_PORT_1_OVERRIDE 节点 1 端口 3306
MARIADB_PORT_2_OVERRIDE 节点 2 端口 3307
MARIADB_PORT_3_OVERRIDE 节点 3 端口 3308

请根据实际需求修改 .env 文件。

  • mariadb_galera_1_data: 节点 1 数据存储。
  • mariadb_galera_2_data: 节点 2 数据存储。
  • mariadb_galera_3_data: 节点 3 数据存储。

使用方法

启动集群

docker-compose up -d

第一个节点 (mariadb-galera-1) 使用 --wsrep-new-cluster 引导集群。其他节点自动加入。

连接到集群

连接到任何节点:

mysql -h 127.0.0.1 -P 3306 -u root -p

或者:

mysql -h 127.0.0.1 -P 3307 -u root -p
mysql -h 127.0.0.1 -P 3308 -u root -p

检查集群状态

SHOW STATUS LIKE 'wsrep_cluster_size';
SHOW STATUS LIKE 'wsrep_local_state_comment';

wsrep_cluster_size 应该为 3wsrep_local_state_comment 应显示 "Synced"。

功能

  • 多主复制: 所有节点同时接受写入
  • 同步复制: 数据在提交前复制到所有节点
  • 自动故障转移: 如果一个节点失败,集群继续运行
  • 高可用性: 3 个节点无单点故障
  • 任意节点读写: 连接到任何节点进行读写操作

注意事项

  • 第一个节点 (mariadb-galera-1) 必须首先启动作为引导节点
  • 所有节点必须能够相互通信
  • 对于生产环境考虑添加更多节点5、7 等)以获得更好的容错能力
  • 使用奇数个节点以避免脑裂场景
  • 生产环境请更改默认 root 密码
  • 集群使用 rsync 进行状态快照传输SST

扩展

要添加更多节点,请按照节点 2 和 3 的模式添加新的服务定义,并更新 wsrep_cluster_address 以包含所有节点。

许可证

MariaDB 使用 GPL v2 许可证授权。