Windows实现MySQL5.7主从复制(详细版)

使用免安装版本(官网下载地址

在Windows上安装两种MySQL服务并同时开启服务


1.下载配置

打开解压文件所在位置,就新建一个配置文件my.ini。


2.主库安装

主库的my.ini配置文件如下:

html 复制代码
[mysqld]
#设置主库端口,注意须是不被占用的端口号
port = 3301
#设置mysql的安装目录
basedir=C:\Users\xxx\Desktop\mysql-5.7.44-winx64\mysql-3301
#设置mysql数据的存储目录,如果该路径下不存在data文件夹,会在安装时自行创建
datadir=C:\Users\xxx\Desktop\mysql-5.7.44-winx64\mysql-3301\data
#二进制文件名称,注意这里的mysql-bin是自行命名,后续所有步骤都要与之对应
log-bin=mysql-bin
#设置服务器的id,要求各个服务器的id必须不一致
server-id = 1                     

接下来以管理员方式运行cmd, 进入到安装目录下的bin路径下:

运行如下命令:

mysqld --initialize --console
#3301为自己的端口号

mysqld --install mysql_master_3301
#开启服务时,会在最后生成随机密码,记得保存用于登录

net start mysql_master_3301
#第一次的登录用随机密码

mysql -uroot -P3301 -p
#修改密码

alter user 'root'@'localhost' identified by '123456';
#可以删除服务的命令(如果没错就不用执行!!!!!)

net stop mysql_master_3301

mysqld remove mysql_master_3301

打开Navicat,测试连接。


3.从库安装

从库的my.ini配置文件如下:

html 复制代码
[mysqld]
#设置主库端口,注意须是不被占用的端口号
port = 3302
#设置mysql的安装目录
basedir=C:\Users\xxx\Desktop\mysql-5.7.44-winx64\mysql-3302
#设置mysql数据的存储目录,如果该路径下不存在data文件夹,会在安装时自行创建
datadir=C:\Users\xxx\Desktop\mysql-5.7.44-winx64\mysql-3302\data
#二进制文件名称,注意这里的mysql-bin是自行命名,后续所有步骤都要与之对应
log-bin=mysql-bin
#设置服务器的id,要求各个服务器的id必须不一致
server-id = 2                     

修改bin 中的mysql.exemysqld.exe名称,并且将对应命令进行修改。

接下来以管理员方式运行cmd, 进入到安装目录下的bin路径下:

运行如下命令:

mysqld --initialize --console
mysqld --install mysql_master_3302
net start mysql_master_3302
mysql -uroot -P3301 -p
alter user 'root'@'localhost' identified by '123456';

之后的所有操作,保证两个MySQL服务都开启,然后在Navicat中同时连接两个服务:


4.进行主从复制配置

在主库新建用户:

这里的主机输入**%** ,表示可以接收所有IP的服务端访问,过期密码选择NEVER(没有就不管他)

在服务器权限中勾选 FileReplication Slave并保存。

在主库端输入查询语句:

show master status;

记录这两个值!!!从库配置时需要使用。

-----------------

打开**从库,**输入语句:

#关闭slave,此时会报错(个别情况,报错问题解决办法再下面)

stop slave;
#注意检查对应信息

change master to master_host='loc alhost',

master_user='xxx ',

master_password='123456 ',

master_port=3301 ,

master_log_file='mysql-bin.000002 ',

master_log_pos=1024;
#开启slave

start slave;

Slave_SQL_RunningSlave_IO_Running都显示yes,表示主从复制配置完成。


报错问题解决:

#查询ONLY_FULL_GROUP_BY是否存在,若存在则执行下一步

SELECT @@sql_mode;
#将ONLY_FULL_GROUP_BY修改为空

SET sql_mode=(SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY',''));


5.测试主从复制

登录入主库,输入

create database test;

然后再从库进行刷新查询,即可看到从库也有了test数据库,证明主从复制完成。

相关推荐
水饺编程1 小时前
第4章,[标签 Win32] :文本的格式化,等待完善
c语言·c++·windows·visual studio
软件资深者1 小时前
系统引导修复(免费)系统不能启动,一键修复系统引导
windows·电脑·系统安全·windows11
love530love2 小时前
Windows 11 配置 CUDA 版 llama.cpp 并实现系统全局调用(GGUF 模型本地快速聊天)
人工智能·windows·大模型·llama·llama.cpp·gguf·cuda 加速
YCOSA20252 小时前
雨晨 Windows 11 Iot 企业版 LTSC 26H2 迎春版 26300.7705
windows
扶苏瑾2 小时前
进程与线程的区别与联系
windows
GuokLiu3 小时前
260203-OpenWebUI-在Windows上和RHEL上部署Caddy的步骤+在iPhone上操作的步骤
windows·ios·iphone
Whoami!3 小时前
⓫⁄₁₀ ⟦ OSCP ⬖ 研记 ⟧ Windows权限提升 ➱ 动态链接库(dll)文件劫持(下)
windows·网络安全·信息安全·dll劫持
罗马尼亚硬拉3 小时前
tensile/reference/environment-variables
人工智能·windows·深度学习
程序员徐师兄12 小时前
Windows JDK11 下载安装教程,适合新手
java·windows·jdk11 下载安装·jdk11 下载教程
编码者卢布16 小时前
【App Service】Java应用上传文件功能部署在App Service Windows上报错 413 Payload Too Large
java·开发语言·windows