MySQL高可用

目录

一:案例概述

1.什么是MySQL高可用

2.方案组成

3.优势

4.案例环境

二:案例实施

1.配置mysql双主复制

2.安装haproxy

3.安装keepalived 


在数字化时代,数据是企业的核心资产,而数据库的可靠性直接决定了业务的连续性。传统单节点 MySQL架构存在单点故障风险,一旦宕机,将导致业务中断、数据丢失等严重后果。尤其是在电商秒杀、金融交易等场景中,数据库的持续可用性(High Availability,HA)已成为系统设计的刚性需求。

一:案例概述

目前 MySQL 已经成为市场上主流数据库之一,考虑到业务的重要性,MySQL数据库单点问题已成为企业网站架构中最大的隐患。随着技术的发展,MHA的出现就是解决 MySQL 单点的问题。另外随着企业数据量越来越庞大,数据库的压力又成为企业的另一个瓶颈,MySQL多主多从架构的出现可以减轻 MySQL本身的压力。本章将主要围绕 “MySQL 主主复制+Keepalived+HAProxy”这一经典高可用架构展开,通过理论结合实践,解析如何通过开源工具实现数据库的故障自动转移、负载均衡和读写分离。

1.什么是MySQL高可用

MySQL 高可用(High Availability)是指通过冗余设计,确保数据库服务在单节点故障、网络中断或硬件损坏等异常情况下,仍能持续对外提供服务,同时保证数据一致性。其核心目标是实现、“零停机、零数据丢失”的业务连续性。

2.方案组成

MySQL 主主复制 + Keepalived + HAProxy 的高可用方案由三部分组成:

  • MySQL 主主复制:两台 MySQL 实例互为主从,双向同步数据,均支持读写操作提供几余和扩展能力。
  • Keepalived:通过 VRRP 协议管理虚拟 IP(VIP),监控 MySQL 状态,故障时自动将 VIP 漂移至存活节点,确保服务地址不变。
  • HAProxy:作为反向代理和负载均衡器,将流量分发至 MySQL 节点,支持健康检查、读写分离(可选)和故障节点自动剔除。

3.优势

  • 高可用性:Keepalived 实现秒级故障切换,HAProxy健康检查确保流量仅路由到正常节点,避免单点故障。
  • 读写扩展:主主架构支持双节点并发写入,提升写入性能;HAProxy可配置读写分离,利用备节点分担读压力。
  • 灵活扩展:可横向扩展 HAProxy 或 MySQL 节点,支持动态调整负载均衡策略(如轮询、权重)。

运维友好基于开源工具,无厂商锁定,社区支持丰富,适合自建数据库集群

4.案例环境

主机操作系统IP应用
Master1openEuler192.168.10.101mysql
Master2openEuler192.168.10.102mysql
Keepalived1openEuler192.168.10.105Keepalived,haproxy
Keepalived2openEuler192.168.10.104

Keepalived,haproxy

(1)案例需求

本案例要求通过 MHA 监控 MySQL 数据库在故障时进行自动切换,不影响业务。

(2)实现思路

安装 MySQL 数据库;

配置 MySQL 互为主从;

安装 haproxy 软件并配置复制均衡;

安装 keepalived 软件并配置故障转移;

模拟 master 故障切换

二:案例实施

1.配置mysql双主复制

对于 MySQL 的主主架构,其实原理就是两台服务器 Master1、Master2 互为主从,双向复制

(1)在Master1 /etc/my.cnf 中修改或者增加下面内容。

(2) 在Master2 /etc/my.cnf 中修改或者增加下面内容。

(3)重启 MySQL 服务。(Master1、Master2 都执行)

(4)登录 MySQL 程序,给从服务器授权。(Master1、Master2 都执行)

查看两台master状态

master1

master2

(5)登录MySQL,配置同步

master1

启动同步

查看slave状态,确保以下两个值为YES

Master2

启动同步

查看slave状态,确保以下两个值为YES

2.安装haproxy

两台 keepalived 都执行

HAProxy 是一个开源的高性能负载均衡器和代理工具,支持 TCP/HTTP 应用的流量分发,具备健康检查、SSL 终止、会话保持等功能,广泛应用于Web 服务器集群、数据库读写分离及 API 网关场景,以高效稳定的特性提升系统可用性和扩展能力。

(1)关闭SELinux 和防火墙

(2)安装haproxy

(3)编辑haproxy配置文件

(4)检测配置文件,并启动服务

(5)测试

登录MySQL,创建测试用户test

验证

3.安装keepalived 

两台keep alived 都执行

Keepalived 是一个用于实现系统高可用性和负载均衡的工具,通过 VRRP(Virtual Router Redundancy Protocol)等协议管理虚拟 IP 地址,持续监测服务器健康状态,当主节点故障时自动将流量切换至备用节点,确保服务不中断,常用于数据库、Web 服务等集群环境,提升系统可性并简化故障恢复流程。

(1)编辑配置文件

keepalived1

启用 nopreempt 的作用:

节点 A(优先级 100,配置 nopreempt)故障节点 B成为 Master。

节点 A 恢复 → 不触发抢占,节点 B继续作为 Master,VIP 不切换。

仅当节点 B 故障时,节点 A 才会重新成为 Master。

keepalived2配置

(2)测试

keepalived1

keepalived2

停止keepalived1

keepalived2

监控脚本

编写一个监控脚本并启动keep alived

此处两台主机均配置为 BACKUP,因此哪台先运行 keepalived,VIP 就在哪台上。本案例刚开始 VIP 运行在 keepalivedl 上

在 keepalived1 测试査看 VIP(注意査看 VIP 只能用 ip 命令,ifconfig 不显示VIP)

(4)测试使用VIP连接mysql

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值