主从数据同步通过配置主库记录binlog、从库重放实现数据复制。1. 确保主从环境兼容且网络互通;2. 主库启用binlog并创建复制用户;3. 从库设置唯一server-id并启动复制线程;4. 验证Slave_IO和SQL_Running为Yes;5. 注意一致性和监控延迟。

MySQL主从数据同步(也称镜像配置)通过将一个MySQL数据库(主库)的数据自动复制到另一个或多个MySQL数据库(从库)实现高可用、读写分离和备份。以下是详细的主从数据同步设置步骤。
1. 确认主从服务器环境
确保主从服务器都已安装MySQL,并且版本兼容(建议使用相同或相近版本)。主从之间需网络互通,能通过IP访问。
2. 配置主服务器(Master)
编辑主服务器的MySQL配置文件 my.cnf(通常位于 /etc/mysql/my.cnf 或 /etc/my.cnf):
[mysqld] server-id = 1 log-bin = mysql-bin binlog-format = ROW expire-logs-days = 7 max-binlog-size = 100M
说明:
- server-id 唯一标识主服务器,必须为正整数且唯一
- log-bin 开启二进制日志,用于记录所有数据变更
- binlog-format 推荐使用ROW格式,更安全精确
重启MySQL服务使配置生效:
sudo systemctl restart mysql登录MySQL创建用于复制的账户:
CREATE USER 'repl'@'%' IDENTIFIED BY 'your_password';GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%';
FLUSH PRIVILEGES;
查看主服务器当前binlog状态:
SHOW MASTER STATUS;记下 File 和 Position 的值,后续从服务器配置需要使用。
3. 配置从服务器(Slave)
编辑从服务器的 my.cnf 文件:
[mysqld] server-id = 2 relay-log = mysql-relay-bin log-slave-updates = 1 read-only = 1
- server-id 必须与主库不同
- relay-log 保存从主库接收到的日志
- read-only 防止从库被误写入
重启从服务器MySQL:
sudo systemctl restart mysql登录MySQL,设置主从连接信息:
CHANGE MASTER TOMASTER_HOST='主服务器IP',
MASTER_USER='repl',
MASTER_PASSWORD='your_password',
MASTER_LOG_FILE='mysql-bin.000001',
MASTER_LOG_POS= 154;
注意:MASTER_LOG_FILE 和 MASTER_LOG_POS 使用之前在主库执行 SHOW MASTER STATUS 得到的值。
启动从库复制线程:
START SLAVE;4. 验证主从同步状态
在从服务器执行:
SHOW SLAVE STATUS\G重点关注以下两个字段:
- Slave_IO_Running: Yes
- Slave_SQL_Running: Yes
如果均为 Yes,表示同步正常。若为 No,检查 Last_Error 字段排查问题(常见如网络不通、账号权限、日志位置错误等)。
测试同步:在主库创建数据库或表,查看从库是否自动同步。
5. 注意事项
- 首次配置前建议对主库进行锁表导出,确保从库基于一致快照开始同步
- 生产环境可使用 mysqldump 加 --master-data 参数导出数据
- 多从库时每个从库 server-id 必须唯一
- 定期监控从库延迟(Seconds_Behind_Master)
基本上就这些。配置成功后,主库的所有数据变更会自动同步到从库,实现数据镜像。不复杂但容易忽略细节,比如 server-id 冲突或权限未刷新。










