mysql高可用

1.1什么是 MySQL 高可用

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

1.2方案组成

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

MySQL 主主复制 :两台 MySQL 实例互为主从,双向同步数据,均支持读写操作,提供几余和扩展能力。
Keepalived :通过 VRRP 协议管理虚拟 IP(VIP),监控 MySQL 状态,故障时自动将 VIP 漂移至存活节点,确保服务地址不变。

:作为反向代理和负载均衡器,将流量分发至 MySQL 节点,支持健康检查、读写分离(可选)和故障节点自动剔除。

1.3优势
高可用性: Keepalived实现秒级故障切换,HAProxy健康检查确保流量仅路由到正常节点,避免单点故障。
读写扩展 :主主架构支持双节点并发写入,提升写入性能;HAProxy可配置读写分离,利用备节点分担读压力。
灵活扩展:可横向扩展 HAProxy 或 MySQL 节点,支持动态调整负载均衡策略(如轮询、权重)。运维友好基于开源工具,无厂商锁定,社区支持丰富,适合自建数据库集群

(5)登录 MySQL 程序,创建测试用户,后续验证实验时使用。(Master1、Master2都执行)

2.配置 mysql 双主复制

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

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

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

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

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

(5)登录 MySQL,配置同步。(Master1、Master2 都执行)

Master1

按主服务器结果更改下面命令中 master_log file 和 master log pos 参数。

启用同步

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

3.安装 haproxy

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

该阶段操作在 Keepalived1、Keepalived2 都要执行

(1)关闭SELinux和防火墙

(2)安装haproxy

内容如下更改部分红色标注(Keepalived1,Keepalived2 配置相同)

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

(5)测试

使用测试用户 test,访问 haproxy 的代理端口登录 mysq1

root@localhost \~#mysql -utest -p123456 -h192.168.10.103 -P3306

4.安装 keepalived

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

(1)关闭 SELinux和防火墙

(2)安装 keepalived

(3)编辑 haproxy配置文件

Keeppalived1 配置,红色标注为两台不同之处,需要注意

添加监控脚本并启动 keepalived

root@localhost \~#vim /etc/keepalived/chk.sh

root@localhost \~#chmod +x /etc/keepalived/chk.sh

root@localhost \~#systemctl start keepalived

Keeppalived2配置,红色标注为两台不同之处,需要注意

添加监控脚本并启动 keepalived

root@localhost \~#vim /etc/keepalived/chk.sh

root@localhost \~#chmod +x /etc/keepalived/chk.sh

root@localhost \~#systemctl start keepalived

root@localhost \~#ip a

(4)编测试使用 VIP连接 mysq1

root@localhost \~#mysql -uroot -p123456 -h192.168.10.100

5.测试故障转移

1.关闭 master1 主机,测试使用 vip 能否正常访问 mysql 数据库关闭

master1后,因为 master1、master2 通过 haproxy 负载均衡,master1关闭后,haproxy 检测其状态异常,会从负载中移除,不进行流量转发,依然可以通过 vip 访问 mysql,实现 mysql 的高可用

root@localhost \~#ping 192.168.10.101

root@localhost \~#mysql -uroot -p123456 -h192.168.10.100

2.接着关闭 keepalived1,测试使用 vip 能否正常访问 mysql 数据库

关闭 keepalived1 后,keepalived 检测到主节点离线,VIP 192.168.10.100会漂移至 keepalived2 节点,mysql 依然可以访问

root@localhost \~#ip a

root@localhost \~#mysql -uroot -p123456 -h192.168.10.100

相关推荐
云技纵横28 分钟前
Gap Lock 死锁实战:5 秒在本地复现 MySQL 间隙锁死锁
后端·mysql
无响应de神1 小时前
三、用户与权限管理
数据库·mysql
摇滚侠16 小时前
Linux CentOS7 rpm 安装 MySQL 5.7
linux·运维·mysql
麦聪聊数据18 小时前
数据服务化时代:企业数据能力输出的核心路径
数据库
ApacheSeaTunnel18 小时前
实战演示 | 基于 Apache SeaTunnel 与 Apache DolphinScheduler 实现 MySQL 到 Doris 离线定时增量同步
大数据·mysql·开源·doris·数据集成·seatunnel·数据同步
shushangyun_18 小时前
2026年快消品B2B系统推荐:支持终端门店订货、促销政策自动化的工具?
java·运维·网络·数据库·人工智能·spring·自动化
DARLING Zero two♡19 小时前
【MySQL数据库】数据类型与表约束
数据库·mysql
曹牧19 小时前
Oracle EXPLAIN PLAN
数据库·oracle
BD_Marathon19 小时前
SQL学习指南——视图
数据库·sql
活宝小娜19 小时前
mysql详细安装教程
数据库·mysql·adb