MySQL Proxy

来源:这里教程网 时间:2026-03-01 18:32:49 作者:

MySQL Proxy是位于mysql的客户端和服务器之间的中间层 MySQL Proxy就是一个连接池,负责将前台应用的连接请求转发到后台数据库,并且通过使用lua脚本,实现复杂的连接控制和过滤,从而实现读写分离和负载均衡。 MySQL Proxy对于应用程序来说是完全透明的。 MySQL Proxy实现读写分离的原理就是将事务性语句交给主服务器操作,让从数据库处理select查询。 配置mysql代理     实验环境:         A:172.16.254.200  —— master         B:172.16.254.100  —— slave         P:172.16.254.180 —— proxy     1、安装代理软件(180)         配IP         [root@proxy ~]# rpm -ivh mysql-proxy-0.8.1-1.el6.x86_64.rpm          ------------------------------             如果报错                 error: Failed dependencies: libevent-1.4.so.2()(64bit) is needed by mysql-proxy-0.8.1-1.el6.x86_64         执行如下操作:                 yum install libevent -y                         ------------------------------     2、拷贝读写分离脚本到指定目录 [root@proxy ~]# cp rw-splitting.lua /usr/share/doc/mysql-proxy-0.8.1/examples/       3、修改配置文件(180)         [root@proxy ~]# vim /etc/sysconfig/mysql-proxy            修改最后一行:         PROXY_OPTIONS="--daemon --log-level=info --log-use-syslog -b 172.16.254.200 -r 172.16.254.100 -s /usr/share/doc/mysql-proxy-0.8.1/examples/rw-splitting.lua -P 0.0.0.0:3306"            查看命令的帮助:mysql-proxy --help         -b:指定主服务器的IP,可读写         -r:指定从服务器的IP,只读         -s:指定使用的脚本         -P:表示监听本机的哪些IP地址及端口      4、启动代理服务器         [root@proxy ~]# /etc/init.d/mysql-proxy start         日志在 /var/log/messages     5、测试代理是否可用         在master上添加一个用户             mysql> grant all on *.* to proxy@'%' identified by 'nihao';         使用proxy用户登录数据库             [root@s200 mysql]# mysql -u proxy -pnihao -h 172.16.254.200               [root@s200 mysql]# mysql -u proxy -pnihao -h 172.16.254.100                     如果从服务器无法登录,请查看配置文件中是否有skip-name-resolve行             [root@s200 mysql]# mysql -u proxy -pnihao -h 172.16.254.180               --------------------------------- 验证读写分离 1、客户端通过代理服务器连接到数据库 多连接几个 1)验证写的操作 在主服务器和从服务器上执行以下语句: tcpdump -i eth0 tcp port 3306           //抓包 在客户端执行一个写的操作 mysql> create database rwx; 然后到主服务器上查看抓包情况,会发现代理直接请求主服务器的连接,证明写的操作是在主服务器上完成的。 15:22:03.835055 IP 172.16.254.180.48117 > 172.16.254.200.mysql             代理服务器                主服务器 2)验证读的操作 理论上读的请求会被代理发送给slave服务器                做了读写分离之后,对于数据库的写入操作,是在主服务器上完成的;从服务器上数据的更新靠的是AB复制。      

相关推荐