Mysql

关注公众号 jb51net

关闭
首页 > 数据库 > Mysql > MySQL主从复制搭建

Windows环境下MySQL主从复制搭建全步骤(超详细实操版)

作者:Leo July

MySQL支持主数据库与从数据配置,采用此配置的数据库,MySQL会自动将主数据库中的数据同步到从数据库中,这篇文章主要介绍了Windows环境下MySQL主从复制搭建详细实操的相关资料,需要的朋友可以参考下

前言:

MySQL主从复制是数据库高可用、读写分离架构的基础,核心作用是实现主库数据的实时同步,保障数据备份与服务容错。本文针对Windows环境(Win10/Win11),从环境准备到测试验证,完整拆解主从复制的搭建流程,同时梳理常见问题排查方案,适合数据库初学者或需要快速落地部署的开发人员。

本文测试环境:
系统:Windows 10 专业版
MySQL版本:8.0.36(主从库版本需一致,避免兼容性问题)
架构:1主1从(单主多从架构可复用此步骤扩展)

一、环境准备

1.1 核心前提

1.2 主机规划

角色IP地址MySQL端口
主库(Master)192.168.1.1003306
从库(Slave)192.168.1.1013306

二、主库(Master)配置

2.1 找到MySQL配置文件

MySQL在Windows环境下的配置文件默认是 my.ini,位置通常在:

2.2 修改主库my.ini配置

在[mysqld]节点下添加/修改以下配置(注意:配置项需顶格写,不能有空格前缀):

# 主库唯一标识(必须为1-2^32-1的整数,主从库不能重复)
server-id=1
# 开启二进制日志(主从复制的核心,记录所有数据变更操作)
log-bin=mysql-bin
# 二进制日志格式(推荐ROW模式,只记录数据行变更,避免SQL模式的兼容性问题)
binlog-format=ROW
# 需要同步的数据库(可指定多个,用逗号分隔;不指定则同步所有库,除了忽略的库)
binlog-do-db=test_db
# 不需要同步的数据库(系统库必须忽略,避免权限问题)
binlog-ignore-db=mysql
binlog-ignore-db=information_schema
binlog-ignore-db=performance_schema
binlog-ignore-db=sys
# 二进制日志过期时间(避免日志文件过大,单位:天)
expire_logs_days=7
# 确保每次事务提交时都刷新二进制日志到磁盘(保证数据一致性)
sync-binlog=1

2.3 重启主库服务

配置修改后需重启MySQL服务生效,两种方式:

  1. 图形化方式:控制面板→管理工具→服务→找到“MySQL”→右键“重启”。

  2. 命令行方式(管理员权限打开CMD):
    net stop MySQL(停止服务)
    net start MySQL(启动服务)

注意:若重启失败,大概率是my.ini配置有误(如语法错误、路径错误),需检查配置文件并修正后重新尝试。

2.4 主库创建同步账号并授权

从库需要通过专门的账号连接主库进行数据同步,因此需在主库创建授权账号:

  1. 登录主库MySQL(命令行或可视化工具如Navicat):
    mysql -u root -p(输入root密码登录)

  2. 创建同步账号并授权(MySQL 8.0+语法):
    CREATE USER 'slave_user'@'%' IDENTIFIED BY 'Slave@123456';(slave_user为用户名,%表示允许所有IP连接,密码需符合MySQL密码策略)
    GRANT REPLICATION SLAVE ON *.* TO 'slave_user'@'%';(授予复制权限)
    FLUSH PRIVILEGES;(刷新权限生效)

2.5 查看主库状态(关键步骤)

登录主库后执行以下命令,记录输出结果(后续配置从库需用到):

SHOW MASTER STATUS;

输出示例:

FilePositionBinlog_Do_DBBinlog_Ignore_DB
mysql-bin.000001156test_dbmysql,information_schema,…

关键参数说明:- File:当前二进制日志文件名(如mysql-bin.000001)-
Position:当前二进制日志位置(如156),从库将从这个位置开始同步

注意:执行完此命令后,不要在主库执行任何写操作(如插入、更新数据),否则Position值会变化,导致后续同步失败。

三、从库(Slave)配置

3.1 修改从库my.ini配置

同样找到从库的my.ini文件,在[mysqld]节点下添加/修改以下配置:

# 从库唯一标识(必须与主库不同,如2)
server-id=2
# 开启中继日志(从库通过中继日志同步主库数据,避免直接操作主库日志)
relay-log=mysql-relay-bin
# 中继日志格式(与主库保持一致)
relay-log-format=ROW
# 需要同步的数据库(与主库binlog-do-db一致)
replicate-do-db=test_db
# 不需要同步的数据库(与主库一致)
replicate-ignore-db=mysql
replicate-ignore-db=information_schema
replicate-ignore-db=performance_schema
replicate-ignore-db=sys
# 从库只读(避免从库被误写,仅对非super权限用户生效)
read-only=1
# 允许super权限用户执行写操作(方便后续维护,如手动同步数据)
super-read-only=0

3.2 重启从库服务

同主库重启方式,确保配置生效。

3.3 配置从库连接主库

登录从库MySQL,执行以下命令配置主从连接(替换为实际主库信息):

CHANGE MASTER TO
MASTER_HOST='192.168.1.100',  # 主库IP地址
MASTER_PORT=3306,             # 主库MySQL端口
MASTER_USER='slave_user',     # 主库创建的同步账号
MASTER_PASSWORD='Slave@123456',# 同步账号密码
MASTER_LOG_FILE='mysql-bin.000001',  # 主库SHOW MASTER STATUS输出的File值
MASTER_LOG_POS=156;             # 主库SHOW MASTER STATUS输出的Position值

注意:若之前配置过主从,需先执行STOP SLAVE;RESET SLAVE ALL;清除原有配置,再执行上述CHANGE MASTER TO命令。

3.4 启动从库同步进程

执行以下命令启动从库同步:

START SLAVE;

3.5 查看从库同步状态(核心验证)

执行以下命令查看从库同步状态:

SHOW SLAVE STATUS\G;

重点关注以下两个参数(均为Yes则说明同步配置成功):

输出示例(关键部分):

Slave_IO_Running: Yes
Slave_SQL_Running: Yes
Master_Log_File: mysql-bin.000001
Read_Master_Log_Pos: 156
Relay_Log_File: mysql-relay-bin.000001
Relay_Log_Pos: 320

四、主从复制测试验证

通过在主库执行数据操作,验证从库是否能正常同步:

4.1 主库操作

# 1. 创建同步数据库(若已存在可跳过)
CREATE DATABASE IF NOT EXISTS test_db;
USE test_db;
# 2. 创建测试表
CREATE TABLE IF NOT EXISTS user (
  id INT PRIMARY KEY AUTO_INCREMENT,
  name VARCHAR(50) NOT NULL,
  age INT
);
# 3. 插入测试数据
INSERT INTO user (name, age) VALUES ('张三', 25), ('李四', 30);

4.2 从库验证

登录从库MySQL,执行以下命令查看数据是否同步:

USE test_db;
# 查看表结构
DESC user;
# 查看数据(应与主库一致)
SELECT * FROM user;

若从库能查询到主库插入的数据,说明主从复制搭建成功!

五、常见问题排查

5.1 Slave_IO_Running: No

5.2 Slave_SQL_Running: No

5.3 主库重启后同步失败

原因:主库重启后,二进制日志文件名可能变化(如从mysql-bin.000001变为mysql-bin.000002)。

解决:重新在主库执行SHOW MASTER STATUS,记录新的File和Position,然后在从库执行STOP SLAVE; → 重新执行CHANGE MASTER TO命令(更新MASTER_LOG_FILE和MASTER_LOG_POS)→ START SLAVE;。

六、总结

Windows环境下MySQL主从复制搭建的核心步骤可概括为:

  1. 主从库配置文件修改(核心是server-id和日志配置);
  2. 主库创建同步账号并授权;
  3. 从库配置主库信息并启动同步;
  4. 验证同步状态和数据一致性。

只要严格遵循步骤,注意主从库的一致性和网络连通性,就能顺利完成搭建。若需实现多从库架构,可复用从库配置步骤,为每个从库分配唯一的server-id即可。

到此这篇关于Windows环境下MySQL主从复制搭建全步骤的文章就介绍到这了,更多相关MySQL主从复制搭建内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文