首页 / 新闻资讯 / 技术教程

MySQL 主从复制搭建:一主一从最小可用配置

2026-10-11分类:技术教程顺云运营

## 适用场景

一台实例跑数据库,故障时业务直接停摆,想要一台实时同步的从库做热备;或者读压力大,想让报表与统计类查询分流出去。一主一从是最小的复制拓扑,主库记日志,从库拉日志回放,搭建成本低,收益立竿见影。也可以在前面再套读写分离组件,但先让一主一从跑稳,拓扑越简单,故障时越好处理。两台机器可以是两台顺云云服务器,建议同地域内网互通,延迟小且流量不走公网。

## 主库与从库配置

主库 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 持续增长同样要报警。该值正常应为个位数秒,网络抖动时短暂升高属于正常,长期维持高位就要查从库负载与机器规格:从库配置过低会导致回放跟不上,延迟越积越大。

技术教程