MySQL主从复制Master-Slave架构通过将主库的数据变更同步到从库,可实现数据备份、读写分离、负载均衡等效果,是提升数据库可用性和扩展性的常用方案。搭建该架构需要保证主从库MySQL版本兼容,网络互通,且主库开启二进制日志功能。

配置前准备
首先准备两台或以上服务器,这里以一主一从为例,主库IP为192.168.0.10,从库IP为192.168.0.11,两台服务器均安装相同大版本的MySQL,且防火墙开放3306端口,确保从库可以访问主库。
主库Master配置
第一步修改主库配置文件,Linux系统下配置文件通常为/etc/my.cnf,Windows系统下为my.ini,在[mysqld]模块下添加以下配置:
[mysqld] # 启用二进制日志,这是主从复制的核心 log-bin=mysql-bin # 设置服务器唯一ID,主从库ID不能重复 server-id=1 # 需要同步的数据库,不配置则同步所有数据库 binlog-do-db=test_db # 忽略同步的数据库 binlog-ignore-db=mysql
修改完成后重启MySQL服务,然后登录主库执行以下命令创建用于同步的用户并授权:
-- 创建同步用户,密码为slave_pass CREATE USER 'slave_user'@'192.168.0.11' IDENTIFIED BY 'slave_pass'; -- 授予同步权限 GRANT REPLICATION SLAVE ON *.* TO 'slave_user'@'192.168.0.11'; -- 刷新权限 FLUSH PRIVILEGES; -- 查看主库状态,记录File和Position的值 SHOW MASTER STATUS;
执行SHOW MASTER STATUS;后会得到类似如下结果,需要记录File和Position的值,后续从库配置会用到:
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
|---|---|---|---|
| mysql-bin.000001 | 154 | test_db | mysql |
从库Slave配置
同样修改从库的配置文件,在[mysqld]模块下添加配置:
[mysqld] # 设置从库服务器唯一ID,不能和主库重复 server-id=2 # 启用中继日志 relay-log=relay-bin # 需要同步的数据库,和主库配置对应 replicate-do-db=test_db # 忽略同步的数据库 replicate-ignore-db=mysql
重启从库MySQL服务后,登录从库执行以下命令配置主库连接信息,将之前记录的File和Position替换到对应位置:
-- 配置主库连接信息 CHANGE MASTER TO MASTER_HOST='192.168.0.10', MASTER_USER='slave_user', MASTER_PASSWORD='slave_pass', MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=154; -- 启动从库同步进程 START SLAVE; -- 查看从库同步状态 SHOW SLAVE STATUS\G
同步状态验证
执行SHOW SLAVE STATUS\G后,查看输出结果中的Slave_IO_Running和Slave_SQL_Running两个字段,如果两者的值都是YES,说明主从同步配置成功。
可以验证一下同步效果,在主库的test_db数据库中创建表并插入数据:
-- 主库执行
USE test_db;
CREATE TABLE user_info (
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(20) NOT NULL
);
INSERT INTO user_info (name) VALUES ('张三');然后登录从库查询test_db数据库的user_info表,如果能看到刚插入的数据,说明主从复制正常工作。
常见问题排查
- 如果从库
Slave_IO_Running为NO,检查主库IP、端口、同步用户密码是否正确,网络是否通畅,主库防火墙是否开放3306端口。 - 如果
Slave_SQL_Running为NO,可能是从库执行同步SQL时出错,查看Last_SQL_Error字段的报错信息,根据错误提示修复问题后,重新执行START SLAVE;即可。 - 主从库版本差异过大可能导致同步异常,建议使用相同大版本的MySQL,比如都使用MySQL 8.0系列。
注意:主从复制是异步过程,存在极短时间的数据延迟,如果对数据一致性要求极高,需要结合业务场景做额外处理,不要完全依赖主从同步的实时性。
MySQL主从复制Master_Slave数据库同步修改时间:2026-06-06 03:31:17