mysql读写分离(proxy)

mysql读写分离

master:server3 172.25.25.3
slave:server2 172.25.25.2
mysql-proxy:server1 172.25.25.1
先做好主从复制,检测一下
在master查看

mysql> show slave status\G
mysql> show master status;

这里写图片描述
在slave查看

mysql> show slave status\G
mysql> use test;
mysql> select * from yin;

这里写图片描述
这里写图片描述
在master对数据库操作

mysql> use test;
mysql> show tables;
mysql> select * from yin;
mysql> insert into yin values('2','dsa');

这里写图片描述
在slave查看

mysql> select * from yin;
# 设置为只读模式
mysql> set global read_only=1;

这里写图片描述
slave可以同步到,说明主从复制配制成功
在server1安装部署mysql-proxy

[root@server1 ~]# tar zxf mysql-proxy-0.8.5-linux-el6-x86-64bit.tar.gz 
[root@server1 ~]# mv mysql-proxy-0.8.5-linux-el6-x86-64bit /usr/local/mysql-proxy
[root@server1 ~]# cd /usr/local/mysql-proxy/
[root@server1 mysql-proxy]# mkdir conf
[root@server1 mysql-proxy]# cd conf/
# 添加环境变量
[root@server1 conf]# vim ~/.bash_profile 
 PATH=$PATH:$HOME/bin:/usr/local/mysql-proxy/bin
[root@server1 conf]# source ~/.bash_profile 

这里写图片描述
这里写图片描述

编写启动脚本

[root@server1 conf]# vim mysql-proxy.conf
[mysql-proxy]
user=root
proxy-address=0.0.0.0:3306
proxy-backend-addresses=172.25.25.3:3306
proxy-read-only-backend-addresses=172.25.25.2:3306
proxy-lua-script=/usr/local/mysql-proxy/share/doc/mysql-proxy/rw-splitting.lua
log-file=/usr/local/mysql-proxy/logs/mysql-proxy.log
log-level=debug
daemon=true
keepalive=true
[root@server1 conf]# cd ..
[root@server1 mysql-proxy]# mkdir logs
[root@server1 mysql-proxy]# chmod 660 conf/mysql-proxy.conf 

这里写图片描述
/usr/local/mysql-proxy/conf/mysql-proxy.conf文件内容:
这里写图片描述

[root@server1 mysql-proxy]# vim share/doc/mysql-proxy/rw-splitting.lua 
if not proxy.global.config.rwsplit then
        proxy.global.config.rwsplit = {
                min_idle_connections = 1,  #最小连接数
                max_idle_connections = 2,  #最大连接数

                is_debug = false
        }
end
[root@server1 mysql-proxy]# /usr/local/mysql-proxy/bin/mysql-proxy --plugins=proxy --defaults-file=/usr/local/mysql-proxy/conf/mysql-proxy.conf 
[root@server1 mysql-proxy]# cat logs/mysql-proxy.log 
2018-08-14 10:21:39: (message) proxy listening on port 0.0.0.0:3306
2018-08-14 10:21:39: (message) added read/write backend: 172.25.25.3:3306
2018-08-14 10:21:39: (message) added read-only backend: 172.25.25.2:3306

这里写图片描述
这里写图片描述
/usr/local/mysql-proxy/share/doc/mysql-proxy/rw-splitting.lua文件更改的内容:
这里写图片描述

测试:

最大连接数为2,至少需要连接三次才会连接到slave
第一次连接:物理主机

[kiosk@foundation25 ~]$ mysql -h 172.25.25.1 -u root -pRedhat+123

这里写图片描述
在master上安装lsof

[root@server3 ~]# yum install -y lsof
[root@server3 ~]# lsof -i :3306

这里写图片描述
server3和server2,server1各有一次连接
这里写图片描述

第二次连接:物理主机不断开原来的连接,再打开一个shell连接

[kiosk@foundation25 ~]$ mysql -h 172.25.25.1 -u root -pRedhat+123

这里写图片描述
master

[root@server3 ~]# lsof -i :3306

server3和server2有一次连接,与server1有两次
这里写图片描述
第三次连接:物理主机不断开原来的连接,再打开一个shell

[kiosk@foundation25 ~]$ mysql -h 172.25.25.1 -u root -pRedhat+123

这里写图片描述
在master上:

[root@server3 ~]# lsof -i :3306

与第二次相比没有变化
这里写图片描述
在slave上:

[root@server2 ~]# yum install -y lsof
[root@server2 ~]# lsof -i :3306

这里写图片描述
这一次server1连接到了slave上
这里写图片描述

在物理主机连接slave的shell里执行

MySQL [(none)]> use test;
MySQL [test]> insert into yin values('3','dsd');

这里写图片描述
在master查看

mysql> select * from yin;

master可以查看到,说明插入语句的时候,proxy强制定义到master上
这里写图片描述

附:
访问一个http的过程(第一行从左到右)

clientcdn接入层webapp分布式DBsystemdisk
firefoxsqiud高可用apachephp-fpmmemcachedmysqlcpmssd
IEnginx负载均衡nginxtomcatredisorclememraid
cacheATS~srcache~~DB2~~
DNSvarnish~memc~~~~~
local~~~~~~~~
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值