Galera Cluster for MySQL 是基于同步复制的多主集群方案,需通过 Percona XtraDB Cluster 或 MariaDB Galera Cluster 部署,不支持原生 Oracle MySQL;仅兼容 InnoDB,依赖 write-set 认证复制,要求小事务、显式提交、避免非确定性函数。

Galera Cluster for MySQL 是一种基于同步复制的多主集群方案,适用于需要高可用、强一致性、读写扩展能力的 MySQL 场景。它不是 MySQL 官方原生功能,而是由 Codership 开发的 wsrep(Write Set Replication)插件实现,常与 MariaDB 或 Percona XtraDB Cluster(PXC)配合使用。MySQL 官方版本(如 Oracle MySQL)本身不直接支持 Galera,需通过 Percona XtraDB Cluster 或 MariaDB Galera Cluster 来部署。
确认 MySQL 兼容性与选型
原生 MySQL 社区版或企业版不支持 Galera 协议。若想用 Galera 方案,必须选择以下之一:
- Percona XtraDB Cluster(PXC):基于 MySQL 源码 + XtraDB(增强版 InnoDB)+ wsrep 插件,兼容 MySQL 协议和语法,推荐用于生产环境;
- MariaDB Galera Cluster:MariaDB 官方集成 Galera,配置更轻量,适合中小规模或快速验证场景;
- 不建议尝试给 Oracle MySQL 手动编译 wsrep 插件——无官方支持、版本难对齐、稳定性风险高。
基础部署三节点集群(以 PXC 为例)
以 Ubuntu/Debian 系统为例,三节点(node1/node2/node3)部署要点如下:
- 所有节点安装相同版本的 percona-xtradb-cluster(如 8.0.32-24),确保内核、glibc、openssl 版本一致;
- 配置 /etc/mysql/my.cnf,每个节点需设置唯一 wsrep_node_name 和 wsrep_node_address;
- 首个节点启动时加 --wsrep-new-cluster 参数引导集群;其余节点直接启动服务,自动加入已存在的集群;
- 检查状态:登录 MySQL 执行 SHOW STATUS LIKE 'wsrep%';,重点关注 wsrep_cluster_size(应为3)、wsrep_ready(ON)、wsrep_local_state_comment(Synced)。
关键配置与同步行为说明
Galera 的同步不是传统主从式,而是全节点实时认证复制,需注意:
- 仅支持 InnoDB 引擎,MyISAM 表无法同步且会导致集群异常;
- 所有写操作在本地预执行 → 生成 write-set → 广播至集群 → 全体认证通过后才提交(冲突则回滚);
- 事务必须小而快:大事务会阻塞认证队列,引发 flow control(可通过 wsrep_flow_control_paused 监控);
- 推荐关闭 autocommit=1,显式使用 BEGIN/COMMIT 控制事务边界;
- 避免跨节点的非确定性函数(如 NOW()、RAND()),可能导致认证失败。
日常运维与故障恢复要点
集群稳定运行依赖规范操作:
- 单节点宕机后自动剔除,重启并启动 mysqld 即可自动同步追平(需磁盘日志完整,gcache.size 足够);
- 若整个集群意外崩溃,需人工指定最后一个安全关机的节点执行 --wsrep-recover 获取 safe_to_bootstrap 值,再用 --wsrep-new-cluster 重建;
- 禁止直接修改 grastate.dat 或强制清空 gcache,易导致数据不一致;
- 监控建议接入 wsrep_cluster_status、wsrep_local_recv_queue_avg、wsrep_cert_deps_distance 等指标,预警延迟或瓶颈。










