### [雨云 MySQL 主从复制与读写分离实战:给数据库上一份并发保险](https://www.jiyueip.com/article/7650) **Published:** 2026-07-21T15:45:29 **Author:** 斑斓助理 **Excerpt:** 在雨云云服务器上搭建 MySQL 主从复制,把读请求分流到从库实现读写分离,讲解主从配置、数据同步原理与常见故障排查。 ## 单库迟早会遇到瓶颈 前面我们在雨云云服务器上装好了 MySQL,单库跑业务没问题。但当读请求(列表、详情、统计)远多于写请求时,所有查询都压在同一台机器上,CPU 和连接数很快到顶。最经典的优化就是**主从复制 + 读写分离**:一台主库负责写,一到多台从库负责读,读流量被分流出去,主库压力立刻降下来,顺带还多了份实时备份。 ## 一、架构与准备 最少两台雨云云服务器:一台主库(master)、一台从库(slave),配置 2 核 2G 起步,数据量大再加从库。机器放**同一私有网络**(参考内网互联那篇),主从之间走内网同步,免费又低延迟。购买走 [雨云专属入口 jiyueip.com/link/5617](https://www.jiyueip.com/link/5617) 填优惠码 **admin01** 五折;用了国内节点对外提供数据库相关服务要按规定备案。 ## 二、主库开启 binlog 主库改 /etc/mysql/mysql.conf.d/mysqld.cnf: ``` server-id = 1 log_bin = /var/log/mysql/mysql-bin.log binlog_format = ROW ``` 重启 sudo systemctl restart mysql。然后建一个专用于复制的账号: ``` CREATE USER 'repl'@'从库内网IP' IDENTIFIED BY '强密码'; GRANT REPLICATION SLAVE ON *.* TO 'repl'@'从库内网IP'; FLUSH PRIVILEGES; ``` 导出当前数据给从库:mysqldump -u root -p –single-transaction –master-data=2 appdb > appdb.sql,记下其中的 binlog 位置。 ## 三、从库接入主库 从库也设 server-id = 2,导入主库数据后执行: ``` CHANGE MASTER TO MASTER_HOST='主库内网IP', MASTER_USER='repl', MASTER_PASSWORD='强密码', MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=XXX; START SLAVE; ``` 看 SHOW SLAVE STATUSG,Slave\_IO\_Running 和 Slave\_SQL\_Running 都是 Yes 就成功了。之后主库写入,从库会自动同步。 ## 四、应用层读写分离 p 数据库层只负责同步,读写分离要在应用里做。比如在代码里配两个数据源:写操作走主库连接,读操作走从库连接;或用 ShardingSphere、ProxySQL 这类中间件统一路由。简单场景手动分两个连接字符串最直观。 ## 五、常见故障排查 | 现象 | 可能原因 | | --- | --- | | Slave\_IO\_Running: No | 主从网络不通、复制账号密码错、server-id 冲突 | | Slave\_SQL\_Running: No | 从库执行中继日志出错(如主键冲突),需查 Last\_Error | | 同步延迟大 | 主库写太猛或從库性能差,可加从库或优化大事务 | ## 合规使用提醒 主从复制仅用于你合法业务的数据库高可用与性能优化。数据库中若含用户个人信息,须遵守《个人信息保护法》,主从库均须做好访问控制与加密存储,复制账号权限应最小化,不得用于未授权数据流转。 **Tags:** 云服务器, 服务器运维, 网站运维, 雨云 **Categories:** 行业洞察 ---