MariaDB在Linux上的集群解决方案有哪些
导读:MariaDB 在 Linux 上的集群方案概览 MariaDB Galera Cluster(wsrep):多主同步复制,所有节点可读写,基于 wsrep API 实现一致性;适合需要高可用与横向扩展读写的场景。RHEL/CentOS...
MariaDB 在 Linux 上的集群方案概览
- MariaDB Galera Cluster(wsrep):多主同步复制,所有节点可读写,基于 wsrep API 实现一致性;适合需要高可用与横向扩展读写的场景。RHEL/CentOS 系列可通过安装 mariadb-server-galera、mariadb-server、galera 来部署,并使用 galera_new_cluster 引导首个节点。支持通过 Galera Arbitrator(garbd) 作为仲裁成员参与脑裂决策(不承载数据)。
- 主从复制(异步/半同步,单主多从):一主多从或级联复制,部署简单、运维直观;读扩展方便,但存在复制延迟与 failover 复杂度。常用于读多写少与已有架构平滑演进。
- 共享存储 HA(Corosync + Pacemaker + DRBD 或 NFS):数据库层无共享状态,数据放在 DRBD 块设备或 NFS 共享存储上,由 Pacemaker 管理 VIP 与 MariaDB 服务切换,实现高可用(主备)。适合已有共享存储体系或需要强一致存储的场景。
- 多主双向复制(主主,MM):两节点互为主从,配合自增偏移避免冲突;实现简单,但冲突处理与运维复杂度较高,适合小规模、可控写入的场景。
方案对比
| 方案 | 复制/一致性 | 拓扑 | 典型场景 | 优点 | 注意点 |
|---|---|---|---|---|---|
| Galera Cluster | 同步、基于 wsrep | 多主 | 高可用、读写扩展 | 多节点可读写、自动成员控制、故障节点自动剔除 | 仅支持 InnoDB;建议 ≥3 节点;网络要求稳定;SST/IST 需规划 |
| 主从复制 | 异步/半同步 | 一主多从 | 读多写少、平滑演进 | 部署简单、成本低、读扩展易 | 复制延迟、failover 需额外机制(如 MHA/Orchestrator) |
| 共享存储 HA(DRBD/NFS) | 无复制(共享块/文件) | 主备 | 已有 SAN/NAS、强一致存储 | 切换可控、数据一致性易理解 | 单点存储风险、脑裂需防护、切换演练必做 |
| 多主双向复制 | 异步 | 双主 | 小规模双活 | 架构简单 | 冲突解决复杂、自增主键需偏移、审计与回放需谨慎 |
快速上手示例
-
Galera Cluster 最小部署步骤(RHEL/CentOS 9 示例)
- 安装组件
dnf install mariadb-server-galera mariadb-server galera - 配置 /etc/my.cnf.d/galera.cnf(所有节点)
[mysqld]
wsrep_on=ON
wsrep_provider=/usr/lib64/galera/libgalera_smm.so
wsrep_cluster_name=my_galera
wsrep_node_address=本机IP
wsrep_node_name=本机名
wsrep_cluster_address=“gcomm://” # 仅引导节点首启置空
binlog_format=ROW
default_storage_engine=InnoDB
innodb_autoinc_lock_mode=2 - 引导首个节点
galera_new_cluster - 加入其余节点
systemctl start mariadb - 验证
mysql -e “SHOW STATUS LIKE ‘wsrep_cluster_size’; ”
提示:需要开放或放行 3306、4567、4568、4444 等端口;需要仲裁可用 garbd。
- 安装组件
-
主从复制(异步,单主多从)
- 主库:启用二进制日志与唯一 server-id,创建复制用户
SET SQL_LOG_BIN=0; CREATE USER ‘repl’@‘%’ IDENTIFIED BY ‘pwd’; GRANT REPLICATION SLAVE ON . TO ‘repl’@‘%’; SET SQL_LOG_BIN=1; FLUSH PRIVILEGES;
SHOW MASTER STATUS; 记录 File/Position。 - 从库:配置唯一 server-id,指向主库并启动复制
CHANGE MASTER TO MASTER_HOST=‘主库IP’, MASTER_USER=‘repl’, MASTER_PASSWORD=‘pwd’, MASTER_LOG_FILE=‘File’, MASTER_LOG_POS=Position;
START SLAVE; SHOW SLAVE STATUS\G - 建议配合 半同步复制 与 GTID 提升一致性与可维护性。
- 主库:启用二进制日志与唯一 server-id,创建复制用户
-
共享存储 HA(Corosync + Pacemaker + DRBD)
- 两节点部署 DRBD 同步块设备,创建资源(如 /dev/drbd0),主节点格式化并挂载到 /data。
- 安装 MariaDB,datadir 指向 /data/mydata。
- 部署 Corosync + Pacemaker,配置 VIP、Filesystem、mysqld 与 DRBD Master/Slave 资源,设置如 stonith-enabled=false、no-quorum-policy=ignore(测试环境),实现主备自动切换。
选型建议
- 需要真正的多主、强一致与自动故障切换:优先 Galera Cluster(≥3 数据节点);跨机房可结合 garbd 做仲裁与见证。
- 以读为主、写较少且已有主从体系:选择 主从复制,配合 半同步 与监控/切换工具提升可用性。
- 已有 SAN/NAS 或必须共享存储:采用 DRBD/NFS + Pacemaker 的主备 HA,注意脑裂与演练。
- 仅双节点且写入可控:可考虑 主主双向复制,务必设计冲突处理与自增主键策略。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: MariaDB在Linux上的集群解决方案有哪些
本文地址: https://pptw.com/jishu/789289.html
