MySQL Proxy 安装和测试

 MySQL Proxy是一个处于你的client端和MySQL server端之间的简单程序,它可以监测、分析或改变它们的通信。它使用灵活,没有限制,常见的用途包括:负载平衡,故障、查询分析,查询过滤和修改等等。 [1]
  MySQL Proxy就是这么一个中间层代理,简单的说,MySQL Proxy就是一个连接池,负责将前台应用的连接请求转发给后台的数据库,并且通过使用lua脚本,可以实现复杂的连接控制和过滤,从而实现读写分离和负载平衡。对于应用来说,MySQL Proxy是完全透明的,应用则只需要连接到MySQL Proxy的监听端口即可。当然,这样proxy机器可能成为单点失效,但完全可以使用多个proxy机器做为冗余,在应用服务器的连接池配置中配置到多个proxy的连接参数即可。

  MySQL Proxy更强大的一项功能是实现“读写分离”,基本原理是让主数据库处理事务性查询,让从库处理SELECT查询。数据库复制被用来把事务性查询导致的变更同步到集群中的从库。

以上摘自百度百科

 我看重的功能 是负载均衡,故障转移,通过和MySQL 主从复制配合(MASTER ,SLAVE ),还可以实现 ‘读写分离’.

一。安装

   参考网上一堆资料,使用源码安装还是失败。以后有时间再研究。转向使用二进制安装,内已包含LUA5.1等

操作系统为CentOS 5.5 32位,从官网下载MySQL Proxy  0.8.2

mysql-proxy安装于192.168.234.131

两台MySQL服务器分别为

MASTER:192.168.234.132

Slave :    192.168.234.133

 

    下载地址为:

 # wget -c http://dev.mysql.com/get/Downloads/MySQL-Proxy/mysql-proxy-0.8.2-linux-rhel5-x86-32bit.tar.gz/from/ftp://ftp.stu.edu.tw/pub/Unix/Database/Mysql/

 # tar mysql-proxy-0.8.2-linux-rhel5-x86-32bit.tar.gz -C /usr/local

# mv  mysql-proxy-0.8.2-linux-rhel5-x86-32bit   mysql-proxy

增加路径

 #vim ~/.bash_profile

 

PATH=$PATH:$HOME/bin:/usr/local/mysql-proxy/bin

export PATH

二、配置

下载写好的服务脚本:

#wget -c http://customcode.googlecode.com/files/mysql-proxy

# cp mysql-proxy   /etc/init.d/mysql-proxy

修改

# vim /etc/init.d/mysql-proxy

PROXY_PATH=/usr/local/mysql-proxy/bin

改成unix模式

:set fileformat=unix

 

# chmod 755 /etc/init.d/mysql-proxy  

# chkconfig mysql-proxy on  

 

修改配置文件

# vi /etc/sysconfig/mysql-proxy  

# options to mysql-proxy

# do not remove --daemon

 

PROXY_OPTIONS="--proxy-backend-addresses=192.168.234.133:3306 --proxy-backend-addresses=192.168.234.132:3306  --daemon"

其它配置参考官网文档

http://dev.mysql.com/doc/refman/5.1/en/mysql-proxy-configuration.html

两台mysql上赋权

grant all on *.* to "root" @ "192.168.234.131";

flush privileges;

启动服务

service mysql-proxy start

三、测试

3.1.负载均衡 /etc/sysconfig/mysql-proxy  配置为

 

 

PROXY_OPTIONS="--proxy-backend-addresses=192.168.234.133:3306 --proxy-backend-addresses=192.168.234.132:3306  --daemon"

 

数据库服务器建同一张表t1 表中,数据不同,

use test;

CREATE TABLE `t1` (

 `iCode` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(50) DEFAULT NULL,
    PRIMARY KEY (`iCode`)
);

132

insert into t1 (name) values ('master');

 

133

insert into t1 (name) values ('slave');

打开多个窗口,运行

mysql -h 192.168.234.131 -u  -p -P 4042 -e"select  name from test.t1;"

可看到不同结果,mysql-prxoy 会将查询分配到mysql服务器

3.2. 故障转移

采用1的配置,在132上停止mysql

service mysqld stop

运行:

mysql -h 192.168.234.131 -u  -p -P 4042 -e"select  name from test.t1;"

仍能正常查询,只有133MySQL上数据。

3.3读写分离

读写分离需依赖LUA脚本,配置文件改为:

 
PROXY_OPTIONS="--proxy-backend-addresses=192.168.234.133:3306 --proxy-read-only-backend-addresses=192.168.234.132:3306 \
--proxy-lua-script=/usr/local/mysql-proxy/share/doc/mysql-proxy/rw-splitting.lua  --keepalive  --daemon"

133为可写,132 为只读,使用rw-splitting.lua为读写分离脚本

还需配置Master(133)-Slave(132) 复制。

 

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值