MySQL主从复制稳定运行需满足五项核心条件:主库启用binlog并配置唯一server-id;创建专用复制用户并授权;主从时间同步误差≤1秒;网络连通且端口开放;从库server-id与主库不同且唯一。

MySQL主从复制要稳定运行,核心是主库和从库之间能正确同步数据变更。这需要在环境、配置、权限、网络等多个层面满足基本条件。
主库必须启用二进制日志(binlog)
这是主从复制的数据源头。没有开启 binlog,主库就无法记录写操作,从库自然无从复制。
- 确认 my.cnf(或 my.ini)中已配置:log-bin = mysql-bin(路径可自定义,但建议使用绝对路径)
- 同时推荐设置:server-id = 1(唯一且非0,主库通常设为1)
- 重启 MySQL 或执行 SET PERSIST log_bin = ON;(8.0.14+ 支持持久化变量)后验证:SHOW VARIABLES LIKE 'log_bin'; 返回 ON
主库需有专用复制用户并授权
从库连接主库时,不能用 root 或业务账号,应创建最小权限的复制账号。
- 登录主库执行:CREATE USER 'repl'@'%' IDENTIFIED BY 'SecurePass123';
- 授予复制权限:GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%';
- 刷新权限:FLUSH PRIVILEGES;
- 注意:若从库 IP 固定,建议限定主机如 'repl'@'192.168.5.10',更安全
主从服务器时间需基本同步
时间偏差过大会导致 GTID 模式下位点解析异常、慢查询日志时间错乱,甚至影响基于时间的备份恢复逻辑。
- 推荐使用 NTP 或 systemd-timesyncd 统一校时
- 检查命令:date 和 timedatectl status
- 允许误差一般控制在 ±5 秒内,生产环境建议 ≤1 秒
网络连通与端口开放是基础前提
从库必须能通过网络访问主库的 MySQL 端口(默认 3306),且主库防火墙/安全组策略允许该连接。
- 从库上测试连通性:mysql -h 主库IP -P 3306 -u repl -p
- 主库确认监听地址不是仅限 localhost(检查 bind-address 配置,生产环境常设为 0.0.0.0 或具体内网 IP)
- 如使用云服务(阿里云、腾讯云等),务必检查安全组是否放行对应端口和源 IP 段
从库 server-id 必须唯一且不同于主库
MySQL 依靠 server-id 区分集群中每个节点,重复会导致复制中断或数据错乱。
- 在从库配置文件中设置:server-id = 2(或其它不与主库及其他从库冲突的整数)
- 不建议使用 0 或未配置,否则启动时可能报错或被忽略
- 修改后需重启 MySQL 或执行 SET PERSIST server_id = 2;(需 SUPER 权限)
不复杂但容易忽略,每项都关系到复制能否建立和长期稳定。准备时按顺序逐项核对,比出问题后再排查高效得多。










