如何在mysql中配置主从复制_mysql主从复制安装配置

来源:这里教程网 时间:2026-02-28 20:23:44 作者:

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 TO
MASTER_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 唯一性、网络连通性、用户权限和日志位置的准确性。一旦配置完成,建议定期监控复制延迟和状态,确保系统稳定。

相关推荐