当前位置:首页 >  站长 >  建站经验 >  正文

读多写少的站,主从复制加读写分离,一台变三台

 2026-08-31 09:04  来源: 互联网   我来投稿 撤稿纠错

  一键部署OpenClaw

资讯类、内容站的流量特点很一致:读请求是写请求的几十上百倍。一台MySQL扛不住时,主从复制把读压力分给从库,主库专心写,是最省钱的扩容路径——不用换机器、不用改表结构,加从库就行。

前提是主从复制先搭好(这个之前写过:主库开binlog、建同步账号,从库CHANGE MASTER TO)。复制跑通后,剩下的问题只有一个:程序怎么决定这条SQL发给谁。

方案从轻到重三档。第一档代码层分流,最快见效:写操作和强一致读走主库,普通列表、详情页走从库。

// PHP简单分流封装
class Db {
private $master; private $slave;
public function __construct($m, $s) {
$this->master = $m; $this->slave = $s;
}
public function query($sql) {
// 写语句走主库
if (preg_match('/^(insert|update|delete|replace)/i', trim($sql))) {
return $this->master->query($sql);
}
// 读语句走从库,可配多个从库轮询
return $this->slave->query($sql);
}
}

第二档是中间件层,ProxySQL或MySQL Router,程序完全不用改,连接串指向中间件,它自动按语句类型分发。好处是对老代码零侵入,代价是多维护一个组件,它自己也可能成为单点。

这里必须说复制延迟这个坑。主从同步是异步的,高峰期延迟可能到秒级。典型症状:用户发完帖子跳回列表页,自己的帖子看不见,因为写进了主库,列表读的是还没同步完的从库。解法:这类“写完立即读”的关键路径强制走主库。

-- 从库上监控延迟
SHOW SLAVE STATUS\G
-- Seconds_Behind_Master 字段:0为正常
-- 持续大于0说明同步吃紧,高峰期加缓存或再分一个从库

验证分流是否生效:从库上SHOW PROCESSLIST看有没有业务查询进来;主库的processlist里应该只剩写操作。两边的Questions计数器对比一下,比例应该跟预期流量结构一致。

经验之谈:日均PV几十万以下的站,先别急着上读写分离,把慢查询和索引治理好,一台机器绰绰有余。读写分离解决的是“读太多”的量变问题,你的瓶颈要真在数据库,多半先是索引和慢SQL的质变问题,顺序别搞反。

数据来源:MySQL官方手册

申请创业报道,分享创业好点子。点击此处,共同探讨创业新机遇!

相关标签
php教程
mysql

相关文章

  • 容器删了数据就没了?Docker卷的备份恢复,别等出事才想起来

    用Docker跑MySQL的站长,最该问自己的一个问题:数据库文件现在能被备份脚本摸到吗?数据在卷(volume)里,如果卷是匿名卷、或者备份脚本只tar了网站目录,那数据库其实处于裸奔状态,容器一坏就只能恢复到上次手动导出的时点。先搞清楚自己的数据在哪。Docker存数据两种方式:bindmoun

    标签:
    php教程
    mysql
  • docker pull龟速还磁盘报警?镜像加速和空间清理一次讲清

    Docker用久了两大顽疾:拉镜像慢得像挂了,以及/var/lib/docker目录悄悄吃掉几十G直到磁盘写满、整站报错。这两件事都有标准解法,十分钟配完。先说拉取慢。DockerHub在国内直连基本不可用,需要配镜像加速器。各家云厂商都提供免费加速地址,阿里云的控制台里有一串专属地址,填到daem

    标签:
    php教程
  • 容器启动顺序乱成一锅粥?Compose依赖、健康检查和一键启停

    站稍微复杂一点,容器就不止三个:Web、PHP、MySQL、Redis,再加个定时任务的容器。用dockerrun一个个敲,重启顺序错一次就一堆报错——PHP比MySQL先起来,连接失败直接崩。Compose的价值就是把这套依赖关系写进配置,一键按正确顺序拉起。关键是depends_on加健康检查。

    标签:
    php教程
  • 环境配一次崩一次?Docker一条命令拉起LNMP,搬家不再从零开始

    传统装LNMP的痛,装过的都懂:PHP版本、扩展依赖、MySQL配置,换台服务器全部重来一遍,中途各种版本冲突。Docker把整套环境固化成配置文件,机器挂了,新机器上dockercomposeup一条命令,几分钟恢复原样。核心概念就三个:镜像(环境模板)、容器(跑起来的实例)、卷(挂出来的数据目录

    标签:
    php教程
    docker
  • WAF不是大站专利:ModSecurity加OWASP免费规则,老站也能上

    WAF这个词听着像金融级配置,其实开源方案零授权费。ModSecurity是老牌WAF引擎,OWASPCRS是一套社区维护的攻击特征规则,两个加起来能挡住绝大多数SQL注入、XSS、路径穿越扫描。你被WebShell和注入攻击折腾过的站,这套东西值得配一次。Nginx上跑ModSecurity用v3

热门排行

信息推荐