服务公告
MySQL 主从复制搭建:一主一从最小可用配置
发布时间:2026-10-11 11:07
## 适用场景 一台实例跑数据库,故障时业务直接停摆,想要一台实时同步的从库做热备;或者读压力大,想让报表与统计类查询分流出去。一主一从是最小的复制拓扑,主库记日志,从库拉日志回放,搭建成本低,收益立竿见影。也可以在前面再套读写分离组件,但先让一主一从跑稳,拓扑越简单,故障时越好处理。两台机器可以是两台顺云云服务器,建议同地域内网互通,延迟小且流量不走公网。 ## 主库与从库配置 主库 my.cnf 的关键参数:server-id 取一个全网唯一的数字,比如 1;开启二进制日志 log-bin=mysql-bin;InnoDB 保持默认的持久化配置即可。改完重启主库,建一个专用复制账号并授权: ```sql CREATE USER 'repl'@'%' IDENTIFIED BY '复杂密码'; GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%'; ``` 从库只需 server-id 设为 2,同样开启中继日志相关默认项。数据基线用 mysqldump --single-transaction --master-data=2 导出,在从库导入,dump 文件里已自动记录导出时刻的日志位点,不用手工查。 ## 建立复制与验证 从库执行指向语句: ```sql CHANGE MASTER TO MASTER_HOST='主库内网IP', MASTER_USER='repl', MASTER_PASSWORD='复杂密码', MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=4; START SLAVE; ``` 日志文件名与位点来自 dump 文件头部的注释或主库 show master status 的输出。验证分三层:show slave status 里两个线程都必须是 Yes;在主库建一张测试表插入数据,几秒内从库能查到;比对两边的 dump 校验或关键表的行数。任何一层不过关,先看 Last_Error 与错误日志。 ## 注意事项 复制账号的密码要当生产凭证管理,网络层面限制只有从库内网地址能连。从库默认只读,别在从库写数据,否则数据漂移后复制报错只能重建。复制是异步的,主库故障瞬间可能有少量未同步的事务,切换前要核对位点;对一致性要求更高的业务,半同步插件是下一步的升级方向。搭建完成后,把复制状态检查加进巡检脚本,双 Yes 只代表线程活着,Seconds_Behind_Master 持续增长同样要报警。该值正常应为个位数秒,网络抖动时短暂升高属于正常,长期维持高位就要查从库负载与机器规格:从库配置过低会导致回放跟不上,延迟越积越大。下一篇: 数据导出指引发布