MySQL 5.7主从配置详解
MySQL 5.7主从配置是保障数据库高可用、实现读写分离与数据备份的核心实践,通过主服务器负责写操作、从服务器同步数据的方式,可提升系统稳定性与性能,本文将系统介绍配置流程,涵盖环境准备、主从配置步骤及验证方法。

环境准备与前提
配置前需准备两台服务器(主/从),并满足以下条件:
- 硬件与软件:两台服务器安装MySQL 5.7(版本需一致),操作系统建议统一(如CentOS 7)。
- 网络配置:确保主从服务器网络可达(ping主机名/IP可通),防火墙开放3306端口(MySQL默认端口)。
- 权限准备:主服务器需创建用于复制的用户(
repl_user),并授予其REPLICATION SLAVE权限。
主服务器配置
主服务器是数据写入源,需修改配置文件(/etc/my.cnf或/etc/mysql/my.cnf),核心参数如下:
server-id:唯一标识(如1,需与从服务器不同)。log_bin:开启二进制日志(记录数据变更),如log_bin=/var/log/mysql/mysql-bin.log。binlog_format:选择row(推荐,支持事务级恢复)或mixed(兼容旧版本)。expire_logs_days:控制binlog保留时间(如7天)。max_binlog_size:限制单个binlog文件大小(如1G)。
修改完成后重启MySQL服务(systemctl restart mysqld),执行show master status;确认二进制日志已启动(输出File和Position字段)。

从服务器配置
从服务器负责复制主服务器数据,需按以下步骤配置:
- 配置权限:在主服务器执行(若未创建
repl_user):grant replication slave on *.* to 'repl_user'@'%' identified by 'repl_password'; flush privileges;
- 修改从服务器配置文件:设置
server-id(如2,与主不同),开启复制权限相关参数。 - 执行复制命令:登录从服务器,执行
change master to指定主服务器信息(IP、用户、密码、binlog文件位置):change master to master_host='主服务器IP', master_user='repl_user', master_password='repl_password', master_port=3306, master_log_file='当前主binlog文件名', master_log_pos=当前binlog位置;
- 启动复制:执行
start slave;,检查状态(show slave status\G;),确认Slave_IO_Running和Slave_SQL_Running为Yes,Seconds_Behind_Master为0(无延迟)。
测试与验证
在主服务器执行DML操作(如insert into 表名 values (...);、update 表名 set 字段='值' where 条件;),等待几秒后,在从服务器查询数据(select * from 表名;),确认数据一致,也可通过监控工具(如Percona Toolkit的pt-heartbeat)验证同步状态。
关键配置对比表
| 配置项 | 主服务器(master) | 从服务器(slave) |
|---|---|---|
server-id | 唯一标识(如1) | 唯一标识(如2,与主不同) |
log_bin | 开启(记录binlog) | 可选(通常不开启) |
binlog_format | row(推荐)或mixed | 无需配置(由主同步) |
expire_logs_days | 控制binlog保留时间 | 无需配置 |
max_binlog_size | 控制binlog文件大小 | 无需配置 |
repl_user | 无需配置(主服务器) | 需配置(用于连接主) |
常见问题解答(FAQs)
Q:主从配置后,从服务器延迟很高(
Seconds_Behind_Master>0)怎么办?
A:首先检查网络连接(ping 主服务器IP)是否正常;其次查看主服务器负载(top命令),若主服务器CPU/IO过高,可能导致复制延迟;可尝试调整主服务器binlog同步频率(如减少max_binlog_size或增加expire_logs_days),或优化从服务器配置(如增加slave_parallel_workers)。
Q:如何实现主从切换(主从故障转移)?
A:MySQL 5.7支持半同步复制(配置主服务器semi_sync_master_enabled=1,从服务器semi_sync_slave_enabled=1),确保主服务器写入数据时,需从至少一个从服务器收到确认,故障转移时,可使用工具(如Percona XtraDB Cluster)监控主服务器状态,当主服务器宕机时,将从服务器提升为主服务器,并修改server-id、log_bin后重启服务。
通过以上步骤,可完成MySQL 5.7主从配置,实现数据高可用与业务连续性。
图片来源于AI模型,如侵权请联系管理员。作者:酷小编,如若转载,请注明出处:https://www.kufanyun.com/ask/216590.html


