🚀 完整指南:MySQL 5.7 主从复制配置全过程
温馨提示:
本文最后更新于 2025年07月20日,已超过 5 天没有更新。若文章内的图片失效(无法正常加载),请留言反馈或直接联系我。
📌 引言
对于数据库初学者而言,掌握 MySQL 主从复制(Master‑Slave Replication)是建立高可用读写分离架构的重要基础。本文结合最新实践,以 MySQL 5.7 为例,全流程指导学生从零开始搭建主从复制环境。
🔧 一、主从复制基础原理
- Binary Log(binlog)机制:主库记录所有数据变更,写入二进制日志。
- Relay Log:从库通过 I/O 线程获取并存储变化日志。
- SQL 线程:从库依次执行 relay log 中的事件,实现数据同步 (K8sCat, Percona, red-gate.com)。
。
💽 二、环境准备与配置文件设置
建议:使用两台 MySQL 5.7 独立服务器,确保版本一致,网络互通。
主库(Master)配置
编辑 my.cnf
增加:
[mysqld]
server-id=1
log-bin=mysql-bin
binlog-format=ROW
expire-logs-days=7
max_binlog_size=100M
重启 MySQL 服务:
sudo systemctl restart mysqld
创建复制账号:
CREATE USER 'repl'@'从库IP' IDENTIFIED BY 'slavepass';
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'从库IP';
FLUSH PRIVILEGES;
``` :contentReference[oaicite:11]{index=11}
### 从库(Slave)配置
编辑 `my.cnf`:
```ini
[mysqld]
server-id=2
relay-log=relay-bin
log-bin=mysql-bin
重启服务并保证唯一 server-id
。 (CSDN)
📦 三、数据导出与复制初始化
锁表 防止写入期间数据变动:
FLUSH TABLES WITH READ LOCK; SHOW MASTER STATUS;
记下
File
与Position
。解锁后继续。导出数据 并传送至从库:
mysqldump --all-databases --master-data > dump.sql scp dump.sql 从库:/tmp/
在从库导入:
mysql < dump.sql
🔄 四、启动主从复制
在从库执行:
STOP SLAVE;
CHANGE MASTER TO
MASTER_HOST='主库IP',
MASTER_USER='repl',
MASTER_PASSWORD='slavepass',
MASTER_LOG_FILE='记录的binlog文件',
MASTER_LOG_POS=记录的位置;
START SLAVE;
查看状态:
SHOW SLAVE STATUS\G
确保 Slave_IO_Running
和 Slave_SQL_Running
为 Yes
,无延迟或错误。 (Percona)
💡 五、进阶:GTID 与多从复制
- 推荐开启 GTID(全局事务 ID),简化 failover 与同步处理 (K8sCat)
- 支持一个主库对多个从库,也可配置从多个主库复制(多源复制),采用不同通道机制 (red-gate.com)。
🖼 六、示意图详解与读写分离
本文首图、读写分离架构图清晰演示了主从复制流程及 MaxScale/ProxySQL 等负载代理方式的整合方式 (Severalnines)。
✅ 七、常见问题与优化建议
- 复制延迟:可开启多线程复制(
slave_parallel_workers>1
)。 - 网络连接保护:开启 SSL,防止中间人攻击。
- 监控系统:通过
SHOW SLAVE STATUS
、Percona 或 OpsDash 等监控从库健康状态 (Percona, opsdash.com)。
📝 结语
这是一份专为学生初学者量身定制的 MySQL 5.7 主从复制实操指南,涵盖从环境准备、配置、同步,到进阶优化,步骤清晰、示意丰富。建议立即动手实操,才能更加深刻理解复制机制。
如需加入图解流程图或外链实用脚本、工具,请继续告诉我,我可进一步完善。
祝你复制顺利,高可用从此不再遥远!
正文到此结束
- 本文标签: mysql
- 本文链接: https://code.itptg.com/article/110
- 版权声明: 本文由老魏原创发布,转载请遵循《署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0)》许可协议授权