使用免安装版本(官网下载地址)
在Windows上安装两种MySQL服务并同时开启服务
打开解压文件所在位置,就新建一个配置文件my.ini。
主库的my.ini配置文件如下:
[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,测试连接。
从库的my.ini配置文件如下:
[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.exe和mysqld.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中同时连接两个服务:
在主库新建用户:
这里的主机输入%,表示可以接收所有IP的服务端访问,过期密码选择NEVER(没有就不管他)
在服务器权限中勾选 File 和 Replication 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_Running 和 Slave_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',''));
登录入主库,输入
create database test;
然后再从库进行刷新查询,即可看到从库也有了test数据库,证明主从复制完成。