Windows MySQL的主从复制配置记录

主配置文件

bash 复制代码
[mysqld]
character-set-server=utf8mb4
bind-address=0.0.0.0
port=3306
default-storage-engine=INNODB

# 基础主库配置(必选) 以下是主从复制操作
server-id = 1
# 开启log log会存储在data目录下
log-bin = mysql-bin
gtid_mode = ON
enforce_gtid_consistency = ON

# 核心:只记录需要同步的操作到binlog
binlog-do-db = jeecgai  # 指定要同步的库(订单库)

# 可选:明确忽略其他库(比如商品库goods_db),因为上面已配置了,这里可以不写
binlog-ignore-db = mysql  # 忽略系统库
binlog-ignore-db = information_schema
binlog-ignore-db = performance_schema

read-only = 0  # 主库可写

[mysql]
default-character-set=utf8mb4

[client]
default-character-set=utf8mb4


# -- 创建复制账号(允许从本机访问)
# CREATE USER 'replmysql'@'localhost' IDENTIFIED BY 'repl@123456';
# -- 授予复制权限(仅同步需要的权限)
# GRANT REPLICATION SLAVE ON *.* TO 'repl'@'localhost';
# -- 刷新权限,使配置生效
# FLUSH PRIVILEGES;

# 查看binlog位置
# SHOW MASTER STATUS;

# 初始化从库
# mysqld --defaults-file=D:\tool\mysql-8.0.23-winx64-slave\my.ini --initialize --console --datadir=D:\tool\mysql-8.0.23-winx64-slave\data --user=mysql
# 得到从库初始化密码: ptk-ySQhk0cY
# 注册从库服务(指定配置文件和服务名)
# mysqld --install mysql_slave --defaults-file=D:\tool\mysql-8.0.23-winx64-slave\my.ini
# 导出主库的订单库(3306端口)
# mysqldump -uroot -p -P 3306 --databases jeecgai --master-data=2 > D:\tool\backupmysql\jeecgai.sql


# 登录 net start mysql_slave
# mysql -u root -p -P 3307 -h 127.0.0.1

# 修改密码
# 重置root密码(替换为你想设置的新密码,比如root@root)
# ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';
# -- 刷新权限(确保密码生效)
# FLUSH PRIVILEGES;
# -- 退出MySQL
# EXIT;


# 导入到从库(3307端口)
# mysql -uroot -p -P 3307 < D:\tool\backupmysql\jeecgai.sql


# 在从库创建同步,利用主库专用的的同步账号
# -- 先停止旧的同步(全新从库执行也不会报错)
# STOP SLAVE;
# -- 2. 重置复制配置(清空之前的MASTER信息和中继日志配置)
# RESET SLAVE ALL;
# 
# -- 配置主库信息(关键:替换File和Position)
# CHANGE MASTER TO
# MASTER_HOST='localhost',        -- 主库在本机
# MASTER_PORT=3306,               -- 主库端口
# MASTER_USER='repl',             -- 步骤4创建的复制账号
# MASTER_PASSWORD='Repl@123456',  -- 复制账号密码
# MASTER_LOG_FILE='mysql-bin.000001',  -- 步骤4记录的File值  SHOW MASTER STATUS;
# MASTER_LOG_POS=7320;               -- 步骤4记录的Position值
# -- 启动同步
# START SLAVE;

# 如果主库需要恢复数据
# # 第一步:导出binlog到SQL文件
# "C:\Program Files\MySQL\MySQL Server 8.0\bin\mysqlbinlog.exe" --start-datetime="2025-12-23 09:00:00" --stop-datetime="2025-12-23 10:00:00" "C:\ProgramData\MySQL\MySQL Server 8.0\Data\mysql-bin.000001" > D:\restore_data.sql

# 第二步:检查SQL文件无误后,执行恢复
# "C:\Program Files\MySQL\MySQL Server 8.0\bin\mysql.exe" -u root -p < D:\restore_data.sql

# 如果从库的log文件损坏了 ,主库 查看binlog的位置 show variables like '%log_bin%';
# -- 1. 加只读锁,阻止新写入(避免清理binlog时主库生成新日志)
# FLUSH TABLES WITH READ LOCK;
# -- 2. 查看所有binlog文件(确认要删除的文件)
# SHOW BINARY LOGS;
# -- 删除mysql-bin.000001及之前的所有binlog(只保留后续完整的)
# PURGE BINARY LOGS TO 'mysql-bin.000002';
# -- 3. 重置主库的binlog序列(可选,彻底清空旧日志)
# RESET MASTER;
# -- 解锁,恢复主库写入
# UNLOCK TABLES;
# -- 查看新的binlog起点(关键!记录File和Position)
# SHOW MASTER STATUS;
# -- 1. 停止所有复制线程
# STOP SLAVE;
# -- 2. 彻底重置(清空配置+中继日志)
# RESET SLAVE ALL;
# -- 3. 删除从库旧的订单库(避免数据冲突)
# DROP DATABASE IF EXISTS order_db;
# -- 从库执行,替换为步骤1记录的File和Position
# CHANGE MASTER TO
# MASTER_HOST='localhost',
# MASTER_PORT=3306,
# MASTER_USER='replmysql',
# MASTER_PASSWORD='repl@123456',
# MASTER_LOG_FILE='mysql-bin.000001',  -- 步骤1记录的新File
# MASTER_LOG_POS=154;  -- 步骤1记录的新Position
# -- 启动同步
# START SLAVE;
# -- 验证状态
# SHOW SLAVE STATUS\G;

# 删除从库
# 1. 先停止服务(如果服务已启动,没启动则跳过,提示"服务未启动"无需在意)
# net stop mysql_slave
# 2. 卸载错误注册的服务(指定服务名,和你之前注册的mysql_slave一致)
# mysqld --remove mysql_slave

从配置文件

bash 复制代码
[mysqld]
# 从库唯一标识(必须≠主库,主库一般是1,这里设2)
server-id = 2
# 从库端口(避免和主库3306冲突,设3307)
port = 3307
# 从库数据目录(自定义路径)
datadir = D:/tool/mysql-8.0.23-winx64-slave/data
# 从库socket文件(Windows下可省略,系统自动处理)
# socket =  D:/tool/mysql-8.0.23-winx64-slave
# 服务名(后续注册服务用,自定义为MySQL80_Slave) 这个没有用
# service-name = mysql_slave

# 主从复制核心配置
# 开启中继日志(从库必需)
relay-log = D:/tool/mysql-8.0.23-winx64-slave/logs/mysql-relay-bin
# 中继日志索引文件路径(显式指定,避免MySQL找不到)
relay-log-index = D:/tool/mysql-8.0.23-winx64-slave/logs/mysql-relay-bin.index
# 关闭从库二进制日志(仅做从库时关闭,若级联复制则开启)
# log-bin = D:/tool/mysql-8.0.23-winx64-slave/logs/mysql-relay-bin.index
# 只读(普通用户无法写入,root仍可操作)
read-only = 1
# GTID模式(8.0推荐开启,便于同步)
gtid_mode = ON
enforce_gtid_consistency = ON

# 基础配置(和主库保持一致即可)
character-set-server = utf8mb4
collation-server = utf8mb4_general_ci
default-time-zone = '+8:00'
explicit_defaults_for_timestamp = ON



# 配置从库只同步的表
replicate-do-db = jeecgai  # 只执行订单库的同步指令
# 可选:明确忽略其他库(和主库对应)
replicate-ignore-db = mysql
相关推荐
xu_ws5 小时前
2G服务器优化MySQL内存配置指南
数据库·mysql
坚果派·白晓明5 小时前
Windows 11 OpenHarmony 版 Flutter 开发环境搭建常见问题解决方法
windows·flutter·开源鸿蒙·鸿蒙跨平台应用开发
计算机毕设指导65 小时前
基于微信小程序+django连锁火锅智慧餐饮管理系统【源码文末联系】
java·后端·python·mysql·微信小程序·小程序·django
计算机学姐6 小时前
基于php的非物质文化遗产推广系统
开发语言·vue.js·mysql·tomcat·php·postman
悟能不能悟6 小时前
java list=null,可以stream吗
java·windows·list
love530love6 小时前
【笔记】华硕 ROG MAXIMUS Z890 HERO 主板 BIOS 更新完整操作实录
运维·人工智能·windows·笔记·单片机·嵌入式硬件·bios
大学生资源网7 小时前
基于JavaWeb的邮件收发系统的设计与实现(源码+文档)
java·开发语言·spring boot·mysql·毕业设计·源码·课程设计
magic_kid_20107 小时前
如何排查和解决 Windows 机器的莫名关机问题
windows·异常关机
坚果派·白晓明7 小时前
Windows 11 OpenHarmony 版 Flutter 开发环境搭建完整指南
windows·flutter·开源鸿蒙·鸿蒙跨平台应用