mysql(四)读写分离(mysql-proxy)

本文详细介绍如何在MySQL中配置读写分离,包括在server3上搭建mysql-proxy代理服务器的具体步骤,实现客户端写操作指向master节点,读操作指向slave节点。通过创建用户、授权、测试读写分离及验证主从复制状态,确保数据的一致性和高可用性。

实验环境

server1 172.25.254.10master mysqld
server2 172.25.254.20slave mysqld
server3 172.25.254.30mysql-proxy
物理机 172.25.254.2测试

基于主从复制!!

配置server3代理端(mysql-proxy)

在server3上面:搭建proxy代理服务器(实现客户端写在server1上面、客户端读server2上的数据)
(1)真机给代理server3传送代理安装包

scp mysql-proxy-0.8.5-linux-el6-x86-64bit.tar.gz root@172.25.254.30:/root
tar zxf mysql-proxy-0.8.5-linux-el6-x86-64bit.tar.gz -C /usr/local/加压到指定目录下

在这里插入图片描述

(2)新建一个配置文件的目录,创建配置文件

mkdir conf
cd conf/
vim mysql-proxy.conf编写服务的配置文件
 1 [mysql-proxy]
 2 proxy-address=0.0.0.0:3306    ##mysql-proxy运行的端口
 3 proxy-read-only-backend-addresses=172.25.6.2:3306   ##slave节点:只读
 4 proxy-backend-addresses=172.25.6.1:3306    ##master节点:可读可写
 5 proxy-lua-script=/usr/local/mysql-proxy/share/doc/mysql-proxy/rw-splitting.lua   ##lua脚本的路径
 6 pid-file=/usr/local/mysql-proxy/log/mysql-proxy.pid 进程pid的位置
 7 log-file=/usr/local/mysql-proxy/log/mysql-proxy.log    ##日志位置
 8 plugins=proxy
 9 log-level=debug    ##定义日志级别
 10 keepalive=true     ##mysql-proxy崩溃时尝试重启
 11 daemon=true        ##打入后台

在这里插入图片描述
在这里插入图片描述
(3)修改数据库发生读写分离时的最大和最小连接数
在这里插入图片描述
在这里插入图片描述

(4)创建日志文件和进程pid文件所在的目录

[root@server3 mysql-proxy]# cd /usr/local/mysql-proxy/
[root@server3 mysql-proxy]# ls
[root@server3 mysql-proxy]# mkdir log建立目录,存放进程pid和日志

在这里插入图片描述
(5)启动mysql-proxy

/usr/local/mysql-proxy/bin/mysql-proxy --defaults-file=/usr/local/mysql-proxy/conf/mysql-proxy.conf
chmod 660 /usr/local/mysql-proxy/conf/mysql-proxy.conf修改配置文件的权限
/usr/local/mysql-proxy/bin/mysql-proxy --defaults-file=/usr/local/mysql-proxy/conf/mysql-proxy.conf

在这里插入图片描述
(6)查看

root@server3 conf]# cd /usr/local/mysql-proxy/
[root@server3 mysql-proxy]# ls
bin  conf  include  lib  libexec  licenses  log  share
[root@server3 mysql-proxy]# cd log/
[root@server3 log]# ls
mysql-proxy.log  mysql-proxy.pid
[root@server3 log]# cat mysql-proxy.log ##查看日志

在这里插入图片描述
server3的proxy配置完成!!

测试读写分离

(1)在server1上面:创建新的用户并且授权

[root@server1 mysql]# mysql -uroot -pLIxin123.
mysql> grant insert,update,select on *.* to ll@'%' identified by 'LIxin123.'; 新建一个用户ll并对他授权
mysql> flush privileges;刷新授权表
mysql> use westos;
mysql> create table userinfo (
    -> username varchar(10) not null,
    -> password varchar(15) not null);
mysql> desc userinfo; 查看表结构


在这里插入图片描述
(2)server3安装lsof
在这里插入图片描述

(3)在物理机上连接

mysql -h 172.25.254.30 -ull -pLIxin123. 
多开物理机然后连接一次在server3上losf -i 3306一次,直到出现server2(发现开始读写分离(用户多的时候))

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
总结:server1(master)上能看到数据说明写操作是在master上
而slave可以查看到数据是因为server1(master)和server2(slave)是主从复制的关系
不能说明server2上可以进行写操作,为了更清楚的验证读写分离,我们做下面的实验

(4)真机上创建并在server1和server2查看

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
.(5)关闭server2的slave再次测试
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
总结:当前server2的slave是关闭的所以不能进行主从复制
测试端插入数据server1(master)可以看到说明写操作是在server1上进行的
server2上没有新插入的数据,读操作是在server2上,所以读写分离了

(7)打开server2的slave
在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值