windows环境下实现mysql的读写分离和负载均衡

时间:2021-12-08 07:35:30

一、前言:

首先,自己也是一个小白,为了做这个任务查阅了许多网上的一些资料,在原有的基础上,我将会把步骤写的尽可能的详细,一来:是为了方便像我一样的小白进行学习和交流,少走弯路;二来是方便自己温故而知新。

参考文章出处:https://www.2cto.com/database/201609/546048.html

(1)、基本的理论知识:

首先,要实现mysql的读写分离,可以使用mysql的主(master)从(slave)复制(Replication)来实现:

主(master)库只提供写数据的服务,而从(slave)库只提供读数据的服务。

什么是主从复制?

简单来说,就是主(master)库把对数据改动的操作保存到一个文件里面,而从(slave)库会隔一个时间间隔根据这个文件更新自己的数据

(所以读到的数据是有延迟的,这个延迟取决于从(slave)库设置的时间间隔)

关于主从复制的详细内容,可以问度娘

(2)、实际操作步骤:

使用以下两台电脑:

主库(master)的IP:192.168.1.65  

从库(slave)的IP:192.168.1.49     //这两个IP是我摘自网上的,用的时候用自己数据库的IP就好,DOS命令ipconfig就能看本机IP

两台电脑都安装了MySQL5.7      //个人感觉版本没什么影响吧,我看的教程装的是5.5的版本,我自己在5.7的版本上也能够实现

 

然后把两台电脑的mysql服务停掉


A、打开主库(master)的mysql安装目录,打开配置文件my.ini    //这里打开的路径是对于5.5版本来说的,对于5.7版本的ini路径在C:\ProgramData\MySQL\MySQL Server 5.7,根据自己的电脑进行查找此路径,还有一点,网上有许多教程说的是打开cnf文件,其实这个是对于Linux来说的,windows下的文件是ini。


windows环境下实现mysql的读写分离和负载均衡

B、在[mysqld]的后面添加如下代码:

log-bin=mysql-bin #slave会基于此log-bin来做replication

binlog-do-db=test #用于master-slave的具体数据库

binlog_ignore_db=mysql #不用于master-slave的具体数据库

binlog_ignore_db=information_schema #和binlog-do-db一样,可以设置多个

//这里也需要说一下,我看的教程上,有添加

server-id=1 #master的标示

这一行代码,其实是多余的(因为接下来的步骤中会提示这个错误,我也是被这个绊了好久才改过来)因为ini文件中有server-id=1这个代码,只需要保持不变即可,无需修改。

C、打开主库(master)的mysql服务,进入mysql的命令行,输入如下代码:

         Showmaster status\G;

windows环境下实现mysql的读写分离和负载均衡

D、记录一下file(日志文件)和position,然后分别给两个从库复制权限

grant replication slave on *.* to'slave'@'192.168.1.%' identified by '123456';

其中的’slave’为登录账号,’123456’为密码,’192.168.1.%’为从库的IP(这里偷懒使用了通配符~)    //我在做的时候提示了一个警告,但是个人觉得没啥问题,所以不用管就行

windows环境下实现mysql的读写分离和负载均衡

E、打开从库1的mysql安装目录,打开配置文件my.ini,在[mysqld]的后面添加如下代码:

log-bin=mysql-bin#slave会基于此log-bin来做replication

replicate-do-db=test#用于master-slave的具体数据库

//这里就要在说明一下,之前说过ini文件中本身就有server-id,所以这里也不需要添加,只需要找到对应的server-id把它的值改大就行,=2就可以,如果还有做别的从库,只要保证从库之间不能有一样即可。

 

保存后启动从库的mysql服务,进入mysql的命令行,输入如下代码:

先停止它的slave:

         stopslave;

再改变它的master:

change master tomaster_host='192.168.1.65',

master_port=3306,

master_user='slave',

master_password='123456',

master_log_file='mysql-bin.000040',

master_log_pos=107;    //这里的数据和图片我也是摘自别人的教程,大家要灵活的区结合自己的数据库进行修改

windows环境下实现mysql的读写分离和负载均衡

再启动它的slave;

         startslave;

然后再输入如下代码,检查是否成功:

         Showslave status\G;

windows环境下实现mysql的读写分离和负载均衡

windows环境下实现mysql的读写分离和负载均衡

如果看到上面这些的,那就没问题了~

当然你也可以在主库(master)上做修改数据的操作,看看从库会不会更新~(注意:从库(slave)的数据库需要自己手动创建)