mysql -proxy
系统环境: RHEL6 x86-64 selinux and iptables disabled
主数据库:server3 172.25.27.3 #写操作
从数据库:server4 172.25.27.4 #读操作
调度主机:server5 172.25.27.5
客户端:foundation27 172.25.27.250
[root@server5 mnt]# mv mysql-proxy-0.8.5-linux-el6-x86-64bit mysql-proxy #重命名
[root@server5 mnt]# mv mysql-proxy /usr/local/
[root@server5 mysql-proxy]# ls
bin include lib libexec licenses share
[root@server5 doc]# cd mysql-proxy/
[root@server5 mysql-proxy]# pwd
/usr/local/mysql-proxy/share/doc/mysql-proxy
[root@server5 mysql-proxy]# vim rw-splitting.lua
min_idle_connections = 1, #将最小连接数由4改为1
max_idle_connections = 2,
[root@server5 mysql-proxy]# mkdir etc
[root@server5 mysql-proxy]# mkdir logs
[root@server5 mysql-proxy]# cd etc/
root@server5 etc]# vim mysql-proxy.conf #修改proxy的配置文件
[mysql-proxy]
proxy-address=172.25.27.5:3306
proxy-read-only-backend-addresses=172.25.27.4:3306 #只读数据库地址
proxy-backend-addresses=172.25.27.3:3306
proxy-lua-script=/usr/local/mysql-proxy/share/doc/mysql-proxy/rw-splitting.lua
daemon=true
user=root
log-level=debug
log-file=/usr/local/mysql-proxy/logs/mysql-proxy.log
keepalive=true
admin-username=admin
admin-password=westos
admin-lua-script=/usr/local/mysql-proxy/lib/mysql-proxy/lua/admin.lua

[root@server5 etc]# chmod 660 mysql-proxy.conf
[root@server5 bin]# ./mysql-proxy --plugins=admin --plugins=proxy
--defaults-file=/usr/local/mysql-proxy/etc/mysql-proxy.conf
mysql> grant select, update, insert on *.* to proxy@'172.25.27.%' identified by'Hhb+1996'; #主数据库中创建调度用户并授权
mysql> use mysql;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
mysql> select * from user; #从库查看是否创建用户成功
[root@server5 etc]# mysql -uadmin -pwestos -h 172.25.27.5 -P 4041 #登陆调度主机查看调度状态,此时,没有客户端
[root@foundation27 Desktop]# mysql -h 172.25.27.5 -uproxy -pHhb+1996 #用物理主机远程登陆调度主机数据库,并进行读和写操作

[root@server5bin]# mysql -h 172.25.27.5 -uproxy -pHhb+1996 #调度主机登陆数据库查看刚才插入数据是否成功
此时,调度机上有两种状态
在主、从数据库端查看刚才插入数据是否成功
调度主机上用lsof -i :3306 来查看连接状态,发现进行进行写操作时,连接的是主数据库server3,进行读操作时,连接的是从数据库,从而实现读写分离
至此,数据库的读写分离成功实现