主从架构维护:如何优化 MySQL 读写分离以提升性能

落婷君_5341

落婷君_5341

2026-07-05

712人浏览

原创

读写分离需显式路由select至从库,主库仅处理写操作;主流方案有代理层、中间件和应用层直连;须监控真实复制延迟、限制从库权限与负载、确保同步稳定性。

主从架构维护:如何优化 mysql 读写分离以提升性能

读写分离不是自动发生的,得靠应用层或中间件显式把 SELECT 请求发给从库,主库只处理 INSERT/UPDATE/DELETE。否则所有查询压在主库,CPU 和连接数很快飙高。

选对路由方式,别让架构反成负担

三种主流路径:代理层(如 ProxySQL)、中间件(如 ShardingSphere-JDBC)、应用层直连(如 Spring 的 AbstractRoutingDataSource)。代理层对业务透明,适合不想改代码的团队;中间件适合已用分库分表的复杂系统;应用层控制最灵活,但需统一规范——比如用 @Transactional(readOnly = true) 触发读库,同时注意事务内哪怕只读也会走主库。

  • ProxySQL 支持 SQL 注释路由(如 /*+ READ_FROM_SLAVE */)或正则匹配 SELECT,但 SELECT FOR UPDATE 必须强制走主库,否则会报错
  • 应用层若用多数据源,建议封装统一的读写标记机制(如 ThreadLocal + 注解),避免开发随意切换导致误走从库
  • 不推荐直接用 MySQL Router 做核心路由——功能简单,缺乏延迟感知和自动摘除能力

盯住延迟,它决定读写分离是否真正有效

Seconds_Behind_Master 在大事务或 IO 压力下常失真,不能单靠它判断真实延迟。更可靠的做法是建一张心跳表:

MySQL
MySQL

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

下载
  • 主库每秒插入 INSERT INTO heartbeat(ts) VALUES (NOW())
  • 从库查该记录时间戳与当前 NOW() 的差值,才是真实复制延迟
  • 延迟超过 2 秒时,强一致性场景(如注册后立即查用户信息)必须绕过读写分离逻辑,直连主库
  • 从库可调低 innodb_flush_log_at_trx_commit=2 和 sync_binlog=0 加速回放,但要接受极端宕机下最多丢 1 秒事务

从库不是“副主库”,得按角色设权限和负载

从库只该干一件事:快速、稳定地提供读服务。其他操作会破坏这个目标:

  • 禁止在从库执行 ALTER TABLE 或 OPTIMIZE TABLE,这类操作会阻塞 SQL 线程,瞬间拉高延迟
  • 大表 JOIN 查询尽量不下推到从库——CPU 和内存压力会拖慢复制线程,反而加剧延迟
  • 从库账号必须仅限 SELECT 权限,且只允许应用服务器 IP 连接;绝不能复用主库管理员账号,否则等于暴露高危入口
  • 从库配置中务必开启 read_only = ON,防止误写;同时设 log_slave_updates = 1,方便级联复制

复制本身要稳,才能撑起读写分离

主从同步质量直接决定读写分离的可用性:

  • binlog 格式必须用 ROW,避免语句级复制在函数、触发器等场景下的不一致风险
  • 启用并行复制(slave_parallel_workers > 0),尤其在多库多表更新频繁时,能显著缩短延迟
  • 半同步复制(semi-sync)值得开启——至少一个从库落盘才返回写成功,把延迟上限压到 1 秒内,代价是写响应时间略增
  • 定期用 SHOW SLAVE STATUS 检查 Slave_IO_Running 和 Slave_SQL_Running 是否均为 Yes,任一为 No 都需立刻介入

相关文章

数码产品性能查询
数码产品性能查询

该软件包括了市面上所有手机CPU,手机跑分情况,电脑CPU,电脑产品信息等等,方便需要大家查阅数码产品最新情况,了解产品特性,能够进行对比选择最具性价比的商品。

下载

相关标签:

mysql

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

相关专题

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

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

2023.08.15

417

5

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

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

2023.09.08

860

5

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

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

2023.09.19

2512

5

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

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

2023.10.09

856

5

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

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

2023.10.17

749

5

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

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

2023.10.17

394

3

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

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

2023.10.18

2256

4

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

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

2023.10.20

4172

4

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

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

2023.10.20

687

5

热门下载

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

精品课程

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

共1课时 | 176人学习

使用phpenv集成环境安装极致CMS
使用phpenv集成环境安装极致CMS

共2课时 | 279人学习