一、安装

需要的软件包:
mysql-proxy-0.8.5-linux-el6-x86-64bit.tar.gz
tar zxf mysql-proxy-0.8.5-linux-el6-x86-64bit.tar.gz -C /usr/local

二、配置文件的修改

vim /usr/local/mysql-proxy/share/doc/mysql-proxy/rw-splitting.lua
mysql-proxy读写分离_第1张图片
cd /usr/local/mysql-proxy/
mkdir etc/
vim mysql-proxy.conf
mysql-proxy读写分离_第2张图片
在/usr/local/mysql-proxy/路径中建立对应的logs目录,否则在开启服务时会出现报错
还要将mysql-proxy的配置文件的权限修改为660,否则在开启服务器时会有权限过大的问题。
开启服务:
/usr/local/mysql-proxy/bin/mysql-proxy --plugins=admin --plugins=proxy --defaults-file=/usr/local/mysql-proxy/etc/mysql-proxy.conf
尽量都进行使用绝对路径
开启的端口:
mysql-proxy读写分离_第3张图片
4041为管理员端口,3306为mysql-proxy与进行读写分离的两台mysql的主机进行直接通信的端口,如果使用mysql-proxy的默认端口,则必须在登陆时在后面加上 -P 4040

进行管理员登陆:

mysql -uadmin -predhat -h 172.25.99.5 -P 4041
mysql-proxy读写分离_第4张图片
可以看到master的拥有rw权限,slave拥有的是ro权限

在master的mysql对管理的用户进行授权,

grant select,update,insert on . to proxy@'172.25.99.%' identified by 'ZHAOyan+1998'; #读写分离使用的用户
flush privileges;
在实现读写分离的时候
一定先要保证是在读写分离的基础上
进行连接:
mysql -h 172.25.99.5 -uproxy -pZHAOyan+1998
使用两个客户端进行连接,这样可以在管理员端进行查看时两个均被up了,即可
mysql-proxy读写分离_第5张图片
而且在客户端进行使用哪一个数据库时,管理员端也是在实时的进行监控的。
客户端几次进行操作的都是zy这个数据库
mysql-proxy读写分离_第6张图片
使用tcpdump或者lsof进行抓包,查看proxy端将用户的请求扔向了哪一个mysql服务器
在172.25.99.250客户端进行写操作,server2上进行读操作,查看抓包情况
此为写操作,250向proxy发出请求,proxy转向master
mysql-proxy读写分离_第7张图片
此为读操作,server2向proxy发出请求,proxy转向slave
mysql-proxy读写分离_第8张图片
实现了读写分离。