原创

🚀 完整指南:MySQL 5.7 主从复制配置全过程

温馨提示:
本文最后更新于 2025年07月20日,已超过 5 天没有更新。若文章内的图片失效(无法正常加载),请留言反馈或直接联系我

📌 引言

对于数据库初学者而言,掌握 MySQL 主从复制(Master‑Slave Replication)是建立高可用读写分离架构的重要基础。本文结合最新实践,以 MySQL 5.7 为例,全流程指导学生从零开始搭建主从复制环境。


🔧 一、主从复制基础原理

  1. Binary Log(binlog)机制:主库记录所有数据变更,写入二进制日志。
  2. Relay Log:从库通过 I/O 线程获取并存储变化日志。
  3. 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)


📦 三、数据导出与复制初始化

  1. 锁表 防止写入期间数据变动:

    FLUSH TABLES WITH READ LOCK;
    SHOW MASTER STATUS;
    

    记下 FilePosition。解锁后继续。

  2. 导出数据 并传送至从库:

    mysqldump --all-databases --master-data > dump.sql
    scp dump.sql 从库:/tmp/
    

    在从库导入:

    mysql < dump.sql
    

    (opsdash.com)


🔄 四、启动主从复制

在从库执行:

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_RunningSlave_SQL_RunningYes,无延迟或错误。 (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 主从复制实操指南,涵盖从环境准备、配置、同步,到进阶优化,步骤清晰、示意丰富。建议立即动手实操,才能更加深刻理解复制机制。

如需加入图解流程图或外链实用脚本、工具,请继续告诉我,我可进一步完善。

祝你复制顺利,高可用从此不再遥远!

正文到此结束
本文目录