MySQL主从复制是常用的数据库架构方案,通过主库记录数据变更,从库拉取并回放变更日志实现数据同步,既可以扩展读能力,也能作为数据备份的重要手段。下面我们就一步步完成主从服务器的配置。

一、配置前准备
我们需要准备两台安装了同版本MySQL的服务器,这里假设主库IP为192.168.0.10,从库IP为192.168.0.11,确保两台服务器之间网络互通,且MySQL服务正常运行。
二、主库配置步骤
1. 修改主库配置文件
打开主库的MySQL配置文件(一般是/etc/my.cnf或者/etc/mysql/my.cnf),添加以下配置:
[mysqld] # 开启binlog日志,主从复制依赖binlog传递数据变更 log-bin=mysql-bin # 设置server-id,主从库的id必须唯一 server-id=1 # binlog格式,推荐使用ROW格式,数据一致性更好 binlog_format=ROW # 需要同步的数据库,不配置则同步所有库(排除系统库) binlog-do-db=test_db
修改完成后重启MySQL服务,让配置生效。
2. 创建主从同步账号
登录主库MySQL,创建一个用于从库连接的账号,并授予复制权限:
-- 创建同步账号,允许从库IP连接 CREATE USER 'repl_user'@'192.168.0.11' IDENTIFIED BY 'repl_password'; -- 授予复制权限 GRANT REPLICATION SLAVE ON *.* TO 'repl_user'@'192.168.0.11'; -- 刷新权限 FLUSH PRIVILEGES;
3. 查看主库状态
执行以下命令查看主库的binlog信息,记录下File和Position的值,后续从库配置需要用到:
SHOW MASTER STATUS;
正常输出会类似如下内容,假设File为mysql-bin.000001,Position为154:
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
|---|---|---|---|
| mysql-bin.000001 | 154 | test_db |
三、从库配置步骤
1. 修改从库配置文件
打开从库的MySQL配置文件,添加以下配置:
[mysqld] # 设置从库唯一的server-id server-id=2 # 开启relay_log,用于存储从主库拉取的binlog日志 relay_log=mysql-relay-bin # 设置只读,避免从库被误写入数据(超级权限用户除外) read_only=1
修改完成后重启从库MySQL服务。
2. 配置主库连接信息
登录从库MySQL,执行以下命令配置主库的连接参数,替换成你实际的主库IP、同步账号、之前记录的File和Position值:
CHANGE MASTER TO MASTER_HOST='192.168.0.10', MASTER_USER='repl_user', MASTER_PASSWORD='repl_password', MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=154;
3. 启动从库同步线程
执行以下命令启动从库的IO线程和SQL线程:
START SLAVE;
4. 检查从库同步状态
执行以下命令查看从库状态:
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(50) NOT NULL,
age INT
);
INSERT INTO user_info (name, age) VALUES ('张三', 25);然后登录从库查询user_info表,如果能看到刚才插入的数据,说明主从同步正常工作。
五、常见问题排查
- 如果从库
Slave_IO_Running为Connecting,检查主从网络是否互通、同步账号权限是否正确、主库防火墙是否开放3306端口。 - 如果
Slave_SQL_Running为No,查看Last_SQL_Error字段的报错信息,一般是主从数据不一致导致,需要先修复数据再重启同步线程。 - 主库重启后,从库会自动重连,不需要手动重新配置,除非主库的binlog被清理导致Position失效。
MySQL_Replication主从同步binlogrelay_log数据备份修改时间:2026-05-30 00:23:13