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

相关推荐
我会尽全力 乐观而坚强几秒前
MySQL零基础入门(二)
数据库·mysql·adb
kali-Myon1 小时前
某校园门禁系统高危 SQL 注入漏洞挖掘复盘
数据库·sql·安全·web安全
程序员在囧途2 小时前
likeadmin-api API 中转站怎么做统一报价?从 /pricing、/user/balance 到 task_id 回执的落地方法
运维·服务器·数据库·likeadmin-api·api中转站·token计费
龙石数据3 小时前
MySQL 全量同步到 Hive 怎么做?三步配置教程
数据库·hive·mysql·数据治理·数据中台
程序员在囧途4 小时前
likeadmin-api API 算力超市怎么做供应商切换?统一鉴权、task_id 和 callback_url 才能稳交付
java·服务器·数据库·开放api·likeadmin-api·api算力超市
数据工匠老o4 小时前
连接池配置实战——从“连不上“到“连太多“的完整排查指南
数据库
一只专注api接口开发的技术猿5 小时前
电商评论自动化监控与情感数据分析完整落地教程(附可直接运行 Python 代码)
大数据·数据库·python·数据分析·自动化
hh真是个慢性子5 小时前
GaussDB Inside 2.23.01.280 集中式一主一备安装
数据库·database·gaussdb·国产数据库·高斯
沉静的小伙5 小时前
Spring事务
java·数据库·spring
大侠锅锅5 小时前
第 3 篇:节点自动化纳管——从裸机到可管理的 7 步安装流水线
数据库·自动化·边缘计算·iot