mysql主从复制是通过主库记录二进制日志、从库拉取并重放日志实现数据同步的机制,启停操作需要严格按照流程执行才能保证复制正常可用。

主从复制启动前的准备条件
在启动主从复制前,需要完成以下基础配置:
- 主库和从库的mysql版本尽量保持一致,避免版本差异导致兼容性问题
- 主库开启二进制日志功能,并且设置唯一的server-id
- 从库设置唯一的server-id,且不能和主库的server-id重复
- 主库创建用于从库同步的账号,并授予REPLICATION SLAVE权限
- 获取主库当前的二进制日志文件名和位置点,用于从库初始化同步位点
mysql启动主从复制的完整流程
1. 主库配置操作
首先修改主库的配置文件,开启二进制日志,重启mysql服务后生效:
-- 主库配置文件my.cnf添加以下内容 [mysqld] log-bin=mysql-bin server-id=1 -- 重启后查看主库状态,获取二进制日志信息 SHOW MASTER STATUS;
执行上述命令后会得到类似如下的结果,记录下File和Position的值:
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
|---|---|---|---|
| mysql-bin.000003 | 156 |
接着创建同步账号并授权:
-- 创建同步用户,密码设置为repl_password CREATE USER 'repl_user'@'192.168.0.%' IDENTIFIED BY 'repl_password'; -- 授予复制权限 GRANT REPLICATION SLAVE ON *.* TO 'repl_user'@'192.168.0.%'; -- 刷新权限 FLUSH PRIVILEGES;
2. 从库配置操作
修改从库配置文件,设置唯一的server-id,重启mysql服务:
-- 从库配置文件my.cnf添加以下内容 [mysqld] server-id=2
重启后使用CHANGE MASTER TO语句配置主库连接信息和同步位点:
CHANGE MASTER TO MASTER_HOST='192.168.0.10', -- 主库IP地址 MASTER_USER='repl_user', -- 之前创建的同步账号 MASTER_PASSWORD='repl_password', -- 同步账号密码 MASTER_LOG_FILE='mysql-bin.000003', -- 主库SHOW MASTER STATUS得到的File值 MASTER_LOG_POS=156; -- 主库SHOW MASTER STATUS得到的Position值
3. 启动主从复制
配置完成后,在从库执行启动复制线程的命令:
-- 启动从库的IO线程和SQL线程 START SLAVE; -- 查看从库复制状态 SHOW SLAVE STATUSG
查看状态时需要关注两个关键字段:Slave_IO_Running和Slave_SQL_Running,如果两个字段的值都是Yes,说明主从复制已经正常启动。
mysql停止主从复制的操作步骤
如果需要停止主从复制,比如进行从库维护或者调整复制配置,可以在从库执行以下命令:
-- 停止从库的IO线程和SQL线程 STOP SLAVE; -- 如果需要清除从库的同步配置信息,可以执行 RESET SLAVE ALL;
注意STOP SLAVE只是暂停复制线程,不会删除同步配置,后续执行START SLAVE可以继续启动复制。而RESET SLAVE ALL会清除所有同步相关的配置和日志信息,执行后需要重新配置才能启动复制。
操作注意事项
- 启动复制前一定要确认主库的二进制日志信息和从库配置的位点完全匹配,否则会导致复制失败
- 停止复制前如果有未同步的事务,需要先确认事务是否已经全部重放完成,避免数据不一致
- 如果复制过程中出现错误,可以先停止复制,排查错误原因后再重新启动,不要直接强制启动
- 主从复制启动后,不要随意修改从库的server-id,否则会导致复制异常
主从复制的启停操作都需要谨慎执行,操作前建议先备份相关数据,避免误操作导致数据丢失。
mysql主从复制start_slavestop_slavechange_master_to修改时间:2026-06-11 02:09:27