实验环境:
Server1:master
Server2:slave
Server3:mysql-proxy
Fondation7:client
在做实验之前配置好server1和server2的主从复制,不再演示
Proxy的配置:
[root@server3 ~]# tar zxf mysql-proxy-0.8.5-linux-el6-x86-64bit.tar.gz
[root@server3 ~]# mv mysql-proxy-0.8.5-linux-el6-x86-64bit /usr/local/mysql-proxy
[root@server3 ~]#cd /usr/local/mysql-proxy/
[root@server3 mysql-proxy]#mkdir conf
[root@server3 mysql-proxy]#mkdri logs
[root@server3 conf]# vim mysql-proxy.conf
[mysql-proxy]
user=root
proxy-address=0.0.0.0:3306
proxy-backend-addresses=172.25.7.1:3306
proxy-read-only-backend-addresses=172.25.7.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@server3 conf]# vim ~/.bash_profile
1
这里写图片描述
[root@server3 conf]# source ~/.bash_profile
1
设置最大链接数,当大于2时开始读写分离
[root@server3 mysql-proxy]# cd share/doc/mysql-proxy/
[root@server3 mysql-proxy]# vim rw-splitting.lua
1
2
这里写图片描述
开启mysql-proxy
[root@server3 mysql-proxy]#chmod 600 conf/mysql-proxy.conf
[root@server3 mysql-proxy]#mysql-proxy --defaults-file=/usr/local/mysql-proxy/conf/mysql-proxy.conf
1
2
在server1和server2
[root@server1 ~]# yum install lsof -y ##进行监控
1
这里写图片描述
这里写图片描述
当打开三个客户端的时候:
这里写图片描述
这里写图片描述
当链接数为三时,proxy将客户端的读请求转至server2.
当insert时仍然还是在server1上操作。
从而实现了读写分离
此外我们还可以通过tcpdump进行抓包分析:
[root@server3 mysql-proxy]# tcpdump -i eth0 -vv port 3306
1
这里写图片描述