主从复制通过主库记录binlog、从库重放实现数据同步。步骤:1. 主库配置server-id、开启binlog并创建复制用户;2. 从库设置唯一server-id、启用中继日志并设为只读;3. 从库执行CHANGE MASTER指向主库,启动复制;4. 验证数据一致性。需确保网络通、权限对、配置准。

MySQL主从复制是一种常见的数据库架构,用于实现数据的高可用、读写分离和备份。配置主从复制的基本思路是:主库(Master)记录数据变更并生成二进制日志(binlog),从库(Slave)读取主库的binlog并重放,从而保持数据一致。以下是详细的安装与配置步骤。
1. 环境准备
确保主从服务器已安装MySQL,并能正常运行。假设:
- 主库IP:192.168.1.100
- 从库IP:192.168.1.101
- MySQL版本:5.7 或 8.0(操作类似)
确认两台服务器之间网络互通,防火墙开放3306端口,且MySQL允许远程连接。
2. 配置主库(Master)
编辑主库的MySQL配置文件 my.cnf(通常位于 /etc/my.cnf 或 /etc/mysql/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服务:
systemctl restart mysqld登录MySQL,创建用于复制的账号:
CREATE USER 'repl'@'192.168.1.101' IDENTIFIED BY 'your_password';GRANT REPLICATION SLAVE ON *.* TO 'repl'@'192.168.1.101';
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服务:
systemctl restart mysqld登录MySQL,执行CHANGE MASTER命令:
CHANGE MASTER TOMASTER_HOST='192.168.1.100',
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;查看复制状态:
SHOW SLAVE STATUS\G重点关注以下两个字段:
- Slave_IO_Running: Yes
- Slave_SQL_Running: Yes
若均为Yes,表示复制正常运行。如果有错误,检查错误信息并排查网络、权限或配置问题。
4. 验证主从复制
在主库执行:
CREATE DATABASE IF NOT EXISTS test_replication;USE test_replication;
CREATE TABLE t1 (id INT);
INSERT INTO t1 VALUES (1);
登录从库,执行:
SHOW DATABASES LIKE 'test_replication';SELECT * FROM test_replication.t1;
如果能看到数据库和数据,说明复制成功。
基本上就这些。配置主从复制不复杂,但要注意 server-id 唯一性、网络连通性、用户权限和日志位置的准确性。一旦配置完成,建议定期监控复制延迟和状态,确保系统稳定。










