插件窝 干货文章 在windows环境下实现mysql的读写分离和负载均衡

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

mysql 数据库 读写分离 负载均衡 2587    来源:红黑联盟    2019-05-30

实现mysql的读写分离

(1)基本的理论知识:

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

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

什么是主从复制?

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

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

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

(2)实际操作步骤:

使用以下三台电脑:

主库(master)的IP:192.168.1.65

从库1(slave)的IP:192.168.1.49

从库2(slave)的IP:192.168.1.64

三台电脑都安装了MySQL5.5(实验室的电脑,版本比较老~)

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

A.打开主库(master)的mysql安装目录,打开配置文件my.ini

这里写图片描述

B.在[mysql]的后面添加如下代码:

?

1
2
3
4
5
server-id=1 #master的标示
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一样,可以设置多个

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

?

1
show master status;

这里写图片描述

记下File(日志文件)和PZ喎�"/kf/ware/vc/" target="_blank" class="keylink">vc2l0aW9uKMjV1r7Ou9bDKaOstNO/4ihzbGF2ZSm74bj5vt3V4rj2yNXWvs7EvP66zcjV1r7Ou9bDwLS4/NDC19S8urXEse2jrNK7uPa007/ixeTWw83qs8nWrsewo6yyu9KqttTW97/iKG1hc3Rlcim1xMr9vt3X9sjOus7Q3rjEstnX96GjPC9wPg0KPGg0IGlkPQ=="d分别给两个从库复制权限">D.分别给两个从库复制权限

?

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

其中的’slave’为登录账号,’123456’为密码,’192.168.1.%’为从库的IP(这里偷懒使用了通配符~)

这里写图片描述

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

?

1
2
3
server-id=2 #比刚刚主库设定的server-id大就行了,且从库之间不能有一样
log-bin=mysql-bin #slave会基于此log-bin来做replication
replicate-do-db=test #用于master-slave的具体数据库

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

先停止它的slave:

?

1
<code class="sql plain" style="border-radius: 0px !important; background: none !important; border: 0px !important; bottom: auto !important; float: none !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align