Linux MariaDB 高可用方案总览
一、方案速览与选型
| 方案 |
拓扑与写入模式 |
故障切换方式 |
优点 |
局限 |
典型场景 |
| 主从复制 + 高可用代理/故障转移工具 |
一主多从,读写分离 |
代理或工具自动切换主库 |
架构简单、成熟可靠、读扩展方便 |
主从异步存在数据延迟;需处理主从一致性、切换一致性 |
读写分离、读多写少、可接受分钟级切换 |
| Galera Cluster(多主同步复制) |
多主对等,近同步、多点写入 |
自动节点剔除/重加入 |
多主写入、强一致(事务级)、自动故障转移 |
写入放大、网络抖动敏感;建议≥3 节点;仅 InnoDB |
高并发写、需要强一致与自动容错 |
| DRBD + Pacemaker/Corosync 主备 |
主备双机,块级复制 |
资源代理切换 VIP/服务 |
数据强一致、切换可控、传统环境友好 |
切换窗口、备机只读、需 STONITH/仲裁 |
双机关键库、传统机房、合规要求强一致 |
| MHA(Master High Availability) |
一主多从 |
管理节点自动选主并提升从库 |
切换快、对应用侵入小、支持自定义脚本 |
依赖 SSH、半同步/GTID 场景需额外配置;不内置负载均衡 |
主从架构、需要快速自动故障转移 |
二、主从复制 + 高可用代理或 MHA
- 主从复制要点
- 主库开启二进制日志并设置唯一 server-id,创建复制账号;从库启用 relay-log 与唯一 server-id,通过 CHANGE MASTER TO 指定主库信息与位置,启动复制并检查 Slave_IO_Running/Slave_SQL_Running=Yes。适用于一主一从/一主多从的读写分离与冗余场景。
- 高可用代理 MaxScale
- 在代理节点安装 MaxScale,后端创建监控账号(REPLICATION CLIENT/REPLICATION SLAVE、SUPER/RELOAD/EVENT 等)与只读/读写路由用户;MaxScale 提供读写分离、健康检查与故障转移,对应用透明。
- 自动故障转移 MHA
- 在所有节点部署 MHA Node,在管理节点部署 MHA Manager;通过 SSH 免密与复制链路检测实现主库故障的自动选主、提升从库、重建复制与可选 VIP 漂移,适合主从架构的快速切换与恢复。
三、Galera Cluster 多主同步
- 关键特性与适用场景
- 基于 wsrep 的近同步多主复制,支持多点写入、自动成员管理与故障剔除;建议 ≥3 节点 奇数规模,避免“脑裂”;主要支持 InnoDB,表需有主键,不支持 XA 和部分显式锁;网络分区敏感,跨机房需谨慎。
- 部署与端口
- 各节点安装 MariaDB(含 Galera 组件),配置 wsrep_provider、wsrep_cluster_address(如 gcomm://ip1,ip2,ip3)、wsrep_node_address/name、SST 方法(如 rsync/xtrabackup-v2)与相应认证;开放端口 3306/TCP、4567/TCP+UDP、4568/TCP、4444/TCP(SST/IST/复制)。初始化第一个节点后依次加入其余节点,并通过 SHOW STATUS LIKE ‘wsrep%’; 校验集群大小与状态。
四、DRBD + Pacemaker/Corosync 主备
- 架构与切换机制
- 使用 DRBD 在块设备层做主备数据复制(通常配 /dev/drbdX),上层用 Pacemaker/Corosync 管理资源与依赖:DRBD 主备角色、挂载 /var/lib/mysql、启动 MariaDB 服务,并通过约束/顺序确保切换顺序与亲和性;云平台无法使用传统 VIP 时,可改用云厂商的 内部负载均衡 作为浮动入口,实现类似效果。
五、落地实施要点
- 基础与网络
- 统一 NTP 时间;按方案开放必要端口(如 3306、4567/4568/4444 等);内核/文件句柄/网络参数按负载调优;生产环境建议启用 SSL/TLS 加密复制与代理链路。
- 复制与一致性
- 主从优先使用 ROW 格式与 GTID(如版本支持),关键库建议半同步;设置合理的复制过滤与一致性校验;切换前确保从库追平或采用可靠工具(如 MHA/代理)完成提升与重建。
- 流量入口与切换
- 读写分离与故障转移建议交给 MaxScale 等代理或编排工具;双机主备场景结合 VIP/内部负载均衡 与健康检查实现透明切换;定期演练故障转移与回切流程。
- 监控与容量
- 监控复制延迟、线程状态、连接数、慢查询、磁盘/IO/网络;为节点故障、复制中断、SST/IST 异常、仲裁丢失等设定告警;按增长预留节点与存储容量,避免级联雪崩。