如何搭建 MySQL 读写分离集群实现高效负载均衡

雨芳同学_2052

雨芳同学_2052

2026-07-07

230人浏览

原创

mysql读写分离集群需三层协同:先通过gtid+半同步确保主从数据强一致,再用proxysql按sql类型智能路由读写请求并剔除延迟从库,最后结合权重调度、动态监控与proxysql双实例高可用实现高效负载均衡。

如何搭建 mysql 读写分离集群实现高效负载均衡

搭建 MySQL 读写分离集群实现高效负载均衡,关键在于三层协同:稳定的数据同步、智能的请求路由、可靠的故障应对。不依赖单一工具,而是按阶段推进——先确保主从数据一致,再用中间件自动分流读写,最后通过健康检查和权重策略让读请求真正“均衡”起来。

一、主从复制必须稳且可控

读写分离的前提是数据能及时、准确地从主库同步到从库。光配好 server-id 和 log-bin 不够,还要关注实际同步质量:

  • 使用 GTID 模式(而非传统 file+pos),避免因日志轮转或跳过事件导致复制中断;开启方式:gtid_mode=ON + enforce_gtid_consistency=ON
  • 推荐启用 半同步复制(rpl_semi_sync_master_enabled=1),保证至少一个从库落盘后再返回客户端,降低主库宕机时的数据丢失风险
  • 定期检查 Seconds_Behind_Master,但更要看 Retrieved_Gtid_Set 和 Executed_Gtid_Set 是否一致——延迟数值可能误报,GTID 才是真实同步状态
  • 从库务必设置 read_only=ON,并限制超级用户权限(如撤销 SUPER 权限),防止意外写入破坏一致性

二、用 ProxySQL 实现细粒度读写分流

比起简单轮询或应用层硬编码,ProxySQL 能在协议层解析 SQL 并动态路由,兼顾透明性与灵活性:

MySQL
MySQL

编写正确的MySQL查询,避免字符集、索引和锁方面的常见陷阱。

下载
  • 将主库加入 hostgroup 10(写组),从库加入 hostgroup 20(读组),并在配置中明确标注权重(例如 weight=3 的高性能从库承担更多流量)
  • 配置两条核心路由规则:
    ^SELECT.*FOR UPDATE$ → 强制走主库(避免分布式事务脏读)
    ^SELECT → 默认走读组,配合 apply=1 确保匹配优先级
  • 开启 连接池(mysql-pool_idle_timeout=60)和 查询缓存(对不变的配置类 SELECT 有效),减少后端连接压力
  • 通过 mysql_servers 表的 max_replication_lag 字段自动剔除延迟超阈值(如 5 秒)的从库,避免把请求打到“假活”节点

三、负载均衡不是平均分配,而是按需调度

真正的“高效均衡”,不是让每个从库处理相同请求数,而是让它们在各自能力范围内分担合理负载:

  • 在 ProxySQL 中启用 least_used 或 connection_pool 调度算法,比简单轮询更能适应瞬时连接数差异
  • 为不同从库设置不同 weight 值(如 192.168.1.10:3306?weight=5,192.168.1.11:3306?weight=2),匹配其硬件规格或网络带宽
  • 对慢查询多的业务模块(如报表导出),可单独建一个低权重、高 buffer 的专用从库,并通过 SQL 注释 /*+ USE_SLAVE_2 */ 绑定路由规则
  • 配合 Prometheus + Grafana 监控各从库的 Threads_running、Innodb_buffer_pool_read_requests 等指标,动态调整权重而非固定配置

四、高可用不能只靠“自动切换”

主库故障时,光靠中间件摘除节点不够——要确保服务不中断、数据不丢、切换后仍可读写:

  • ProxySQL 自身应部署双实例 + Keepalived VIP,避免代理层单点;配置 mysql-monitor_username 启用心跳检测,间隔建议 ≤3 秒
  • 主库宕机后,需触发外部脚本(如调用 Orchestrator API 或手动 promote)选出新主,并更新 ProxySQL 的 hostgroup 映射——不能仅靠“读组里没主就报错”
  • 切换完成后,强制刷新 ProxySQL 查询规则缓存(LOAD MYSQL QUERY RULES TO RUNTIME),防止旧路由规则残留
  • 所有写操作客户端应具备重试机制(如 retry on “Lost connection”),配合应用层幂等设计,掩盖短暂切换窗口

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

mysql

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
服务器是什么
服务器是什么

服务器是一种计算机硬件设备或软件程序,它具有强大的计算和存储能力,用请求、存储数据和提供服务。它在互联网中着关重要的作用,为用户提供各种服务和资源。本专题为大家提供服务器相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.15

437

5

连接apple id服务器时出错
连接apple id服务器时出错

连接apple id服务器时出错的原因包括网络连接问题、服务器问题、Apple ID账户问题、设备问题、防火墙或安全软件问题、时间和日期设置问题、Apple服务器维护等。本专题为大家提供apple id相关的文章、下载、课程内容,供大家免费下载体验。

2023.09.08

900

5

搭建互联网服务器
搭建互联网服务器

搭建互联网服务器需要:1、选择合适的硬件和操作系统,第一步是选择合适的硬件和操作系统;2、安装和配置操作系统,是搭建互联网服务器的关键步骤;3、安装和配置服务器软件,是搭建互联网服务器的下一步,常见的服务器软件包括Apache、Nginx、Tomcat等;4、配置防火墙和安全性,是搭建互联网服务器的重要步骤;5、域名解析和配置,是搭建互联网服务器的最后一步。

2023.09.19

2852

5

如何查看服务器状态
如何查看服务器状态

查看服务器状态的方法有使用命令行工具、图形界面工具、监控工具、日志文件和远程管理工具等。本专题为大家提供服务器状态相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.09

956

5

服务器域名转接慢怎么解决
服务器域名转接慢怎么解决

服务器域名转接慢的解决办法有DNS优化、服务器优化、CDN加速、前端优化和网络优化等。本专题为大家提供服务器相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.17

849

5

服务器评测软件
服务器评测软件

服务器评测软件有PassMark Software、CPU-Z、GPU-Z、CrystalDiskMark、IOmeter、JMeter、LoadRunner、Apache Bench等等。详细介绍:1、PassMark Software是一款综合性的服务器性能测试软件,可以评估服务器在各种负载条件下的性能;2、CPU-Z是一款可以提供服务器CPU详细信息的软件等等。

2023.10.17

434

3

如何开启TFTP服务器
如何开启TFTP服务器

开启TFTP服务器的步骤包括选择TFTP服务器软件、下载和安装软件、配置TFTP服务器以及启动和测试服务器等。本专题为大家提供服务器相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.18

2576

4

服务器负载不兼容怎么解决
服务器负载不兼容怎么解决

解决方法:1、增加服务器资源;2、负载均衡;3、优化应用程序;4、增加缓存机制;5、分布式架构;6、限流和熔断;7、自动化扩容。想知道更详细服务器负载不兼容的解决方法,可以访问本专题下面的文章。

2023.10.20

4812

4

宽带如何接入服务器
宽带如何接入服务器

宽带接入服务器的方法有ADSL宽带接入服务器、光纤接入服务器、无线接入服务器和以太网接入服务器等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.20

767

5

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PostgreSQL vs MySQL
PostgreSQL vs MySQL

共1课时 | 183人学习