网站读多写少,比如新闻、文章站,大部分请求是查数据。数据库单点扛不住,一查就慢,还怕主库挂了全站瘫。MySQL主从复制+读写分离就能把读的压力拆到从库,写走主库、读走从库,性能和高可用都提升。小编实测配过一套,这篇讲清楚怎么弄。
数据库压力大,除了主从还得多台机器分担,这两家海外云主机够稳:TMHHost(海外服务器)、Zlidc(云主机)。

主从复制是主库的改动同步到从库,从库是主库的只读副本。读写分离就是写操作走主库、读操作走从库,把读的压力分出去。主库保证数据正确,从库分担查询,网站就快了。主从不是万能,但读多写少超有用。

主从的前提,主库要开binlog。在my.cnf里设server-id和log-bin,主从的server-id不能一样。改完重启MySQL,再建一个复制用的账号,给REPLICATION SLAVE权限。主库配置是复制的源头,先弄好。

从库也设server-id(和主库不同),然后CHANGE MASTER TO指向主库,填主机、账号、binlog位置。START SLAVE开始同步。SHOW SLAVE STATUS看同步状态,Seconds_Behind_Master为0说明追上。从库同步起来,读的压力就能分了。

读写分离靠代码或中间件。程序里区分读连接和写连接,读连从库、写连主库,最直接。或用中间件代理(如ProxySQL),统一入口自动分流。从库有延迟,实时性要求高的别走从库。分离做对了,查询压力明显下降。

主从有延迟,刚写入的别马上去从库读。从库千万别写入,会破坏同步。监控复制状态,断了要及时发现重连。主从不是备份替代品,备份照做。数据重要,别图快把一致性弄丢。

总结:主库开binlog、从库CHANGE MASTER同步、代码或中间件做读写分离、监控复制状态防延迟,MySQL主从+读写分离就搭起来了。读多写少的站,这套能省不少事。