mysql如何搭建主从复制环境_mysql主从复制环境搭建方法

主从复制需配置主库启用二进制日志并创建复制用户,从库设置server-id和主库连接信息,启动复制后验证数据同步。1. 主库配置log-bin、server-id,创建repl用户;2. 从库配置server-id、relay-log,执行CHANGE MASTER并START SLAVE;3. 检查Slave_IO_Running和Slave_SQL_Running为Yes,主库操作在从库同步即成功。

MySQL主从复制是一种常见的数据库架构,用于提升数据安全性、读写分离和备份效率。通过配置主从复制,主库(Master)的数据变更会自动同步到从库(Slave),实现数据冗余和负载分担。下面介绍如何搭建MySQL主从复制环境。

1. 环境准备

确保主从服务器已安装相同或兼容版本的MySQL,并能通过网络互相通信。

  • 主库IP:192.168.1.10
  • 从库IP:192.168.1.11
  • MySQL版本建议一致(如MySQL 5.7或8.0)
  • 关闭防火墙或开放3306端口

2. 配置主库(Master)

编辑主库的配置文件 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

重启MySQL服务使配置生效:

systemctl restart mysqld

登录MySQL创建用于复制的账号:

CREATE USER 'repl'@'192.168.1.11' IDENTIFIED BY 'password';
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'192.168.1.11';
FLUSH PRIVILEGES;

查看主库当前二进制日志状态:

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

重启从库MySQL:

systemctl restart mysqld

登录MySQL,设置主从连接信息:

CHANGE MASTER TO
MASTER_HOST='192.168.1.10',
MASTER_USER='repl',
MASTER_PASSWORD='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 testdb;
USE testdb;
CREATE TABLE t1 (id int);
INSERT INTO t1 VALUES (1),(2),(3);

登录从库,检查数据是否同步:

USE testdb;
SELECT * FROM t1;

若查询结果与主库一致,说明复制成功。

基本上就这些。只要配置正确,MySQL主从复制搭建并不复杂,但需注意server-id唯一、网络连通性和权限设置。出现异常时可通过 SHOW SLAVE STATUS 中的 Last_Error 排查问题。