MariaDB 在 Linux 上的集群方案与选型
一、常见方案与适用场景
- Galera Cluster 多主同步:基于 wsrep 的同步多主复制,任意节点可读写,自动成员管理与故障剔除,适合需要高可用与就近写入的业务;建议至少 3 个节点(奇数) 以避免脑裂。典型端口:3306、4567(Galera)、4568(IST)、4444(SST)。
- 主从复制(异步/半同步):一主多从或级联复制,部署简单、读写分离容易,写入单点;适合读多写少、对一致性要求可放宽到最终一致的业务。
- DRBD + Pacemaker + Corosync 双机 HA:共享块存储(DRBD)配合资源代理,实现 VIP 漂移与自动故障切换;适合双机且要求强一致/快速切换的场景(如传统机房)。
- 云上场景:可用云厂商 内部/外部负载均衡 配合数据库集群(如 Galera 或主从),在公有云上替代传统 VIP 的漂移思路。
二、快速对比
| 方案 |
拓扑与写入 |
一致性 |
节点数建议 |
主要优点 |
主要限制 |
| Galera Cluster |
多主,任意节点写入 |
同步(几乎) |
≥3(奇数) |
自动故障剔除/加入、读可扩展 |
写入受跨节点通信影响,表需主键,仅 InnoDB |
| 主从复制 |
一主多从 |
最终一致(可半同步) |
≥2 |
简单、成本低、易读写分离 |
主单点,故障切换需额外机制 |
| DRBD + Pacemaker + Corosync |
双机共享块设备 |
强一致(块级) |
2 |
切换快、数据强一致 |
架构复杂,双机边界,扩容不便 |
三、关键配置要点
四、部署与验证步骤
-
Galera 三节点最小落地
- 所有节点安装 MariaDB 与 Galera 组件;配置 wsrep 参数(cluster_name、cluster_address、node_name/address、SST 方法)。
- 第一个节点初始化:执行 galera_new_cluster;其余节点启动 MariaDB 服务自动加入。
- 验证:SHOW STATUS LIKE ‘wsrep_cluster_size’; 期望值为 3;检查各节点 wsrep_ready=ON。
- 防火墙放行:3306/4567/4568/4444。
-
主从复制验证
- 主库创建库表并插入数据;从库执行 START SLAVE 后,查询从库是否一致。
- 使用 SHOW SLAVE STATUS\G 检查 Seconds_Behind_Master、IO/SQL 线程状态。
-
DRBD + Pacemaker 验证
- 检查 DRBD 状态:cat /proc/drbd(应为 UpToDate/Primary 等);
- 资源检查:crm status 查看 VIP、Filesystem、mysqld、drbd 资源状态与角色;
- 故障演练:停止主库或断开网络,确认 VIP 漂移 与 服务在备机拉起。
五、运维与故障处理要点
- 脑裂与异常恢复:Galera 两节点网络抖动易脑裂;处理思路为清理节点本地状态后重引导集群(删除 /var/lib/mysql/grastate.dat、galera.cache,必要时使用 –wsrep-new-cluster 引导首节点,再启动其他节点)。
- SST 与账号:选择 xtrabackup-v2 时,提前创建 SST 用户并配置 wsrep_sst_auth;首次全量同步时间与数据量、网络带宽相关。
- 云上负载均衡:在公有云使用 内部/外部负载均衡 将 3306 转发至后端数据库节点,实现读写入口统一与故障节点摘除(替代传统 VIP 漂移)。