Galera 多主集群

1. 什么是 Galera 集群

Galera 是 MariaDB 的多主同步复制插件,支持多节点数据同步和同时写入,保证各节点数据一致性,实现高可用和负载均衡。

2. 安装准备

确保所有节点 MariaDB 版本支持 Galera,并安装 Galera 相关软件包:

sudo apt install mariadb-server galera-4

`

或使用对应系统包管理工具安装。

3. 配置 Galera 集群

编辑每个节点的 MariaDB 配置文件(如 /etc/mysql/my.cnf),添加或修改以下内容:

[mysqld]
binlog_format=ROW
default_storage_engine=InnoDB
innodb_autoinc_lock_mode=2
bind-address=0.0.0.0

wsrep_on=ON
wsrep_provider=/usr/lib/galera/libgalera_smm.so

# 集群名称
wsrep_cluster_name="galera_cluster"

# 集群节点 IP 列表(逗号分隔)
wsrep_cluster_address="gcomm://node1_ip,node2_ip,node3_ip"

# 当前节点唯一ID
wsrep_node_name="node1"

# 当前节点 IP
wsrep_node_address="node1_ip"

# SST 方法(状态快照传输)
wsrep_sst_method=rsync

# SST 用户及密码
wsrep_sst_auth="sstuser:password"

4. 创建 SST 用户

在任意节点 MariaDB 中执行:

CREATE USER 'sstuser'@'%' IDENTIFIED BY 'password';
GRANT RELOAD, LOCK TABLES, PROCESS, REPLICATION CLIENT ON *.* TO 'sstuser'@'%';
FLUSH PRIVILEGES;

5. 启动集群

  • 第一个节点启动:
sudo systemctl stop mariadb
sudo galera_new_cluster
  • 其他节点启动:
sudo systemctl restart mariadb

6. 验证集群状态

登录 MariaDB,执行:

SHOW STATUS LIKE 'wsrep_cluster_size';

返回的值应为集群节点数,表示集群正常。

7. 注意事项

  • Galera 集群要求网络稳定,节点时钟同步。
  • 事务支持同步提交,性能受网络延迟影响。
  • 适合读写负载均衡和高可用场景。

Galera 多主集群为 MariaDB 提供了强大的多节点同步能力,实现无单点故障的高可用数据库架构。