一台win7上搭建mysql主从服务器

win7上搭建mysql主从服务器

安装前提

如果以前安装过mysql,请注意注册表的mysql安装路径是否正确,防止不必要的浪费时间找一堆安装错误。下面是查找注册表的mysql安装路径配置
在这里插入图片描述

第5步找到master(mysql主服务),跟你们的MySQL可能不一样,原因,是因为我在注册安装mysql服务时,指定了master为主库的服务名称,所以你们可以自行指定数据库服务名。
同时查看slave(mysql从服务器)路径是否也正确

1、解压mysql-5.7.20-win64.zip压缩包到指定文件目录下,将解压出来的mysql-5.7.20-winx64文件夹复制一份mysql-5.7.20-winx642

在这里插入图片描述

2、解压出来的文件缺少my.ini配置文件,自行创建该文件,

在这里插入图片描述

一、配置主库

3.填写主库mysql-5.7.20-winx64文件夹中my.ini文件内容

[client]  
# 设置mysql客户端默认字符集 
default-character-set=utf8
port = 3306

[mysqld]
#二进制日志文件,记录主库增删改查的操作,给从库执行同步操作留下记录
log-bin=master-bin
#记录log-bin的最后一次操作的索引位置,给从库执行同步操作留下查询位置记录
log-bin-index=master-bin.index
#服务Id,和slave 的server-id不一样
server-id=1
#sync_binlog=224
#如果不配置主从同步的数据库,则默认全库同步,建议配置全部数据库同步,否则有可能导致 slave_IO_Running:NO  或者 slave_SQL_Running:NO的异常
#做主从同步的数据库名
binlog-do-db=mmw_rebuild                 //这是自己创建的数据库
binlog-do-db=mysql
binlog-do-db=performance_schema
binlog-do-db=information_schema
binlog-do-db=sys
#忽略不同步的数据库名
#binlog-ignore-db=mysql
#binlog-ignore-db=performance_schema
#binlog-ignore-db=information_schema
#端口
port=3306
# 设置mysql的安装目录 (注意文件目录建议如下使用双反斜杠,不然安装数据库时遇到以s或者其他特殊字符开头的目录名,例如  E:\mysql\slave\data 数据库会报错,找不到目录 )
basedir=E:\\mysql\\mysql-5.7.20-winx64
# 设置mysql数据库的数据的存放目录 
datadir=E:\\mysql\\mysql-5.7.20-winx64\\data
# 服务端使用的字符集默认为8比特编码的latin1字符集 
character-set-server=utf8 

#以下配置可自行决定数值,但主从库需要一致
# 允许最大连接数 
max_connections=200 
# 创建新表时将使用的默认存储引擎 
default-storage-engine=INNODB
#sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
#下面sql-mode 在低级版本mysql换为高版本mysql时,如果迁移数据报错,可以去掉注解符号(把mysql5.6的数据和结构转存到mysql5.7)
#sql-mode=NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

4、dos切换到mysql-5.7.20-winx64文件夹bin目录下执行

在这里插入图片描述

mysqld --install master --defaults-file="E:\mysql\mysql-5.7.20-winx64\my.ini"

或者命令简写

mysqld --install master

安装服务如下图所示
在这里插入图片描述
master为mysql启动服务名称,在下图可看到服务的创建成功
在这里插入图片描述

5、启动matser(mysql主数据库)

执行以下命令初始化master数据库

mysqld  --initialize-insecure  --user=mysql

执行成功后会在生成data文件夹,如下图
在这里插入图片描述
执行以下命令启动master(mysql主数据库)

net start master

启动成功如下图所示
在这里插入图片描述

6、输入以下命令连续按回车登陆数据库

mysql -uroot -p   

在这里插入图片描述

7、修改mysql密码 (此方法适用于mysql8.0之前的版本,且不包含8.0版本)

 mysql 默认密码为空   所以  可以在登录mysql之后   设置密码为  root  ,输入如下
set password for root@localhost = password('root');

8、切到主库dos窗口输入以下命令查看主库状态,记住下图显示的两个值

show master status;

在这里插入图片描述
记住这两个值 ,配置从库时需要使用

9、首先我们需要在主库(master)中创建一个用户用于与从库同步的用户名和密码(这里我创建一个test用户,密码为mysql),并给test用户授权,以用于主库操作从库。

命令说明

格式:
create user test;    //创建用户test
grant replication slave on *.* to '从库用户名'@'从库主机地址'identified by '密码(mysql)';
flush privileges;//刷新

切换到master dos命令窗口下实际执行以下命令

create user test;
grant replication slave on *.* to 'test'@'127.0.0.1'identified by 'mysql';
flush privileges;

注意:若是执行 grant replication slave on *.* to ‘test’@’%'identified by ‘mysql’;则任意服务器皆可授权
执行结果如下:
在这里插入图片描述

二、配置从库

10.填写主库mysql-5.7.20-winx642文件夹中my.ini文件内容

[client]
port=3307
default-character-set=utf8
[mysqld] 
#从库配置
# 设置日志的路径,与master类似
log-bin=slave-bin
# salve服务器标识,唯一,不能与master相同
server-id=2
# 设置要与主库同步的数据库
replicate-do-db=mmw_rebuild
replicate-do-db=mysql
replicate-do-db=performance_schema
replicate-do-db=information_schema
replicate-do-db=sys
#忽略与主库不同步的数据库名
#replicate-ignore-db=mysql
#replicate-ignore-db=performance_schema
#replicate-ignore-db=information_schema
#设置3307端口
port=3307
# 服务端使用的字符集默认为8比特编码的latin1字符集 
character-set-server=utf8 
# 设置mysql的安装目录 
basedir=E:\\mysql\\mysql-5.7.20-winx642
# 设置mysql数据库的数据的存放目录 
datadir=E:\\mysql\\mysql-5.7.20-winx642\\data

#以下配置可自行决定数值,但主从库需要一致
# 允许最大连接数 
max_connections=200 
# 创建新表时将使用的默认存储引擎 
default-storage-engine=INNODB 
sql-mode=NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
#sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES

11、新开dos切换到mysql-5.7.20-winx642文件夹bin目录下执行以下命令

mysqld --install slave --defaults-file="E:\mysql\mysql-5.7.20-winx642\my.ini"

结果如下图所示表示成功
在这里插入图片描述

slave为从库mysql启动服务名称,在下图可看到服务的创建成功
在这里插入图片描述

12、启动slave(mysql 从库数据库)

执行以下命令初始化slave数据库

mysqld  --initialize-insecure  --user=mysql

在这里插入图片描述
执行成功后会在生成data文件夹,如下图
在这里插入图片描述

13、执行以下命令启动slave(mysql从数据库)

net start slave

在这里插入图片描述
如果启动失败 请检查各个目录和端口号是否配置正确

14、输入以下命令连续按回车登陆数据库

mysql -uroot -p    

15、修改mysql密码 (此方法适用于mysql8.0之前的版本,且不包含8.0版本)

 mysql 默认密码为空   所以  可以在登录mysql之后   设置密码为  root  ,输入如下
set password for root@localhost = password('root');

在这里插入图片描述

17、切到从库输入同样的命令查看,结果为空

show slave status;

在这里插入图片描述

18、现在我们切到从库(slave),把主库与从库联系起来。

执行以下命令:

change master to 
master_host='127.0.0.1',                         //主服务器地址
master_port=3306,                                //主服务器端口号
master_user='test',                              //主服务器登陆账号
master_password='mysql',                         //主服务器登陆账号密码
master_log_file='master-bin.000006',             //主服务器二进制日志文件名
master_log_pos=398;                              //主服务器二进制日志文件索引

在这里插入图片描述

19、然后执行命令 start slave 开启主从同步

start slave;
在这里插入图片描述

20、然后执行命令查看 slave的状态

show slave status \G;

在这里插入图片描述

三、主从库的关闭顺序

在从库dos命令窗口,执行以下命令关闭slave从库同步

stop slave           //停止从服务器线程
exit;                //退出slave服务器
net stop slave       //关闭slave服务器

四、重启slave从库,查看从库连接状态,重新连接数据库

show slave status\G;

如果出现 slave_IO_Running:NO 或者 slave_SQL_Running:NO的错误
进行如下操作解决
首先切换到主服务器master,再次获取下面两个值

show master status;

在这里插入图片描述

切换到从库服务器slave,执行以下操作

stop slave;
set GLOBAL SQL_SLAVE_SKIP_COUNTER=1;
change master to master_host='127.0.0.1',master_port=3306,master_user='test',
master_password='mysql',master_log_file='master-bin.000003',master_log_pos=40315589;
start slave;
show slave status\G;

五、如果从现有服务器直接复制制作从库,需要注意点有三处

1.删除slave从服务器 根目录下 data文件夹中的auto.cnf,启动数据库会自动生成新的server-uuid

在这里插入图片描述
或者用新生成一个uuid替换掉该文件中的值
在这里插入图片描述

2.slave从服务器的根目录下的my.ini文件中的server_id一定要注意不能跟主服务器相同,否则报错(配置文件上面已有自己去看)

3.执行完1、2步,必须重启从库,重新连接主库

主库操作

show master status;

在这里插入图片描述

从库操作

stop slave;                        	 	//停止从库线程运行
set GLOBAL SQL_SLAVE_SKIP_COUNTER=1;	//跳过当前错误
change master to master_host='127.0.0.1',master_port=3306,master_user='test',
master_password='mysql',master_log_file='master-bin.000004',master_log_pos=1639;
exit;                                   //退出mysql
net stop slave                     		//关闭mysql
net start slave                    		//重启mysql
mysql -uroot -proot                     //登陆mysql
start slave;                            //重启slave线程
show slave status\G;				    //显示从库连接状态

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值