怎样确保Linux MariaDB高可用性
导读:Linux MariaDB高可用落地方案 一、方案选型与适用场景 MariaDB Galera Cluster(同步多主):多节点同时写入、自动节点加入、故障节点自动同步,适合对写入高可用与横向扩展有要求的业务。依赖 wsrep 复制,仅...
Linux MariaDB高可用落地方案
一、方案选型与适用场景
- MariaDB Galera Cluster(同步多主):多节点同时写入、自动节点加入、故障节点自动同步,适合对写入高可用与横向扩展有要求的业务。依赖 wsrep 复制,仅支持事务型引擎(如 InnoDB/XtraDB)。
- 主从复制 + VIP/Keepalived/Heartbeat+DRBD:一主多从或双主,配合 VIP 漂移实现故障切换,适合读多写少、已有主从架构快速改造的场景。
- 共享存储/DRBD + 集群资源管理(Pacemaker/Corosync):数据强一致、主备切换,适合对数据一致性与集中存储有要求的传统架构。
以上方案在生产中均有成熟实践,选择时优先考虑业务写入模式、一致性要求、运维复杂度与团队经验。
二、Galera Cluster 部署要点(推荐)
- 基础准备
- 至少 3 节点,时间同步(如 NTP),主机名可解析,网络稳定。
- 安装 Galera 组件(RHEL/CentOS 8 示例):执行
yum module install mariadb:10.3/galera,安装包包含 mariadb-server-galera、mariadb-server、galera。
- 关键配置(/etc/my.cnf.d/galera.cnf 或 /etc/mysql/mariadb.conf.d/ 下)
- 启用复制与节点标识:
wsrep_on=ONwsrep_provider=/usr/lib64/galera/libgalera_smm.sowsrep_cluster_name="my_galera"wsrep_node_address="本机IP"、wsrep_node_name="本机名"wsrep_cluster_address="gcomm://节点1IP,节点2IP,节点3IP"
- 存储与复制一致性:
default_storage_engine=InnoDB、innodb_autoinc_lock_mode=2binlog_format=ROWwsrep_sst_method=rsync(或 xtrabackup-v2,需额外安装)
- 网络与绑定:
bind-address=0.0.0.0(或指定内网地址)
- 启用复制与节点标识:
- 启动顺序与验证
- 引导集群:在第一个节点执行
galera_new_cluster(或galera_new_cluster mariadb@node1);其余节点执行systemctl start mariadb。 - 验证:
SHOW STATUS LIKE 'wsrep_ready';(应为 ON)、SHOW STATUS LIKE 'wsrep_cluster_size';(应等于节点数)、SHOW STATUS LIKE 'wsrep%';查看复制状态。
- 引导集群:在第一个节点执行
- 防火墙与 SELinux(示例为 firewalld)
- 开放端口:3306/TCP(客户端/管理)、4567/TCP+UDP(复制流量)、4568/TCP(IST)、4444/TCP(SST)。
- 按需配置 SELinux 策略以允许群集通信与操作。
以上步骤覆盖官方与社区通行做法,适合在 RHEL/CentOS 7/8 与兼容发行版上落地。
三、主从复制 + VIP 的高可用(读写分离/快速改造)
- 主从搭建(一主一从示例)
- 主库配置:
server-id=1、log_bin=mysql-bin,创建复制用户并授权REPLICATION SLAVE,记录SHOW MASTER STATUS;的 File/Position。 - 从库配置:
server-id=2、relay_log=mysql-relay-bin,执行CHANGE MASTER TO ...指向主库,启动复制START SLAVE;,用SHOW SLAVE STATUS\G检查Slave_IO_Running与Slave_IO_Running均为 Yes。
- 主库配置:
- 故障切换与 VIP 漂移
- 方案 A(双主半同步 + Keepalived):两库互为主从,配置 VIP 与 VRRP 健康检查脚本(检测 3306 端口/实例存活),主库异常自动降级、VIP 漂移到备库。
- 方案 B(主备 + Heartbeat + DRBD):主库持有数据盘 DRBD 主副本,Heartbeat 检测并切换 VIP 与 MariaDB 资源,备库升主后接管服务。
- 适用与注意
- 读多写少、对切换可控性要求高、已有主从架构的场景优先。
- 双主需应用层/中间件支持幂等与冲突处理;主备需处理复制延迟与数据一致性校验。
上述主从与 VIP 方案在 Ubuntu/CentOS 上均有成熟教程与验证步骤,可按现有网络与安全策略裁剪。
四、通用稳定性与运维要点
- 数据安全与恢复
- 定期全量备份(如 mysqldump/mariabackup),保留至少 7–30 天;关键变更前必做备份。
- 启用 GTID 或记录位点,便于重建复制与时间点恢复。
- 监控与告警
- 监控复制延迟(Seconds_Behind_Master)、连接数、线程状态、错误日志、磁盘/IO/延迟抖动。
- 对主从复制设置 复制心跳 与 告警阈值,对 Galera 关注
wsrep_local_state_comment、wsrep_ready、队列与冲突。
- 网络与系统
- 保证节点间低时延与稳定带宽;跨机房部署需评估复制时延与一致性。
- 统一 NTP,关闭不必要防火墙规则,仅放通 3306/4567/4568/4444 等必要端口。
- 升级与变更
- 采用滚动升级(先备后主)、先在测试环境演练;变更窗口内禁止大事务与 DDL。
- 连接与中间件
- 应用使用连接池与重试机制;读写分离建议引入中间件(如 ProxySQL/MaxScale)提升可用性与可观测性。
以上方案与要点可直接用于生产落地:追求写入高可用与多主扩展优先选 Galera Cluster;已有主从或读多写少优先选 主从 + VIP/Keepalived/Heartbeat+DRBD。无论采用哪种方案,务必完成备份、监控、网络与切换演练,确保真正可切换、可恢复、可观测。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: 怎样确保Linux MariaDB高可用性
本文地址: https://pptw.com/jishu/759708.html
