Linux下 MySQL Proxy 安装与配置2

来源:互联网 发布:计算工资的软件 编辑:程序博客网 时间:2024/05/18 16:36

如果无法正常使用,请检查相应的其他组件是否安装了,mysql-proxy 需要依赖 lua、libtool、glib、libevent 等库。

 

管理功能选项

执行 mysql-proxy --help-all 查看所有的设置选项,比较重要的选项大致描述一下功能:

代理功能选项

 

其他选项

 

我们执行试试,监听本地MySQL是3000端口:

 

然后从我的windows机器使用mysql客户端连接过去:

 

Welcome to the MySQL monitor.  Commands end with ; or g.
Your MySQL connection id is 3
Server version: 
4.1.22-log
Type 'help
;' or 'h' for help. Type 'c' to clear the buffer.
mysql>

 

远程的mysql-proxy缺省对外监听的是4040端口,它会对连接4040端口的连接做处理后丢给后端3000端口的mysql服务器处理,把结果返回。
我们执行一条sql试试:

 

 

 

 

 

+------------+
| version()  |
+------------+
4.1.22-log |
+------------+
1 row in set (0.01 sec)

 

【 对两台/多台MySQL的负载均衡 】

 

首先我们目前MySQL Proxy 是支持多台后端MySQL数据库的,它可以支持同时设置多个 --proxy-backend-addresses 选项来使用多个MySQL,比如:

 

 

就分别连接了两台MySQL,一台是3000端口,一台是4000端口。

假设有两台Slave的读数据服务器,我们使用mysql_proxy多个数据库的轮询技术来进行两台Slave数据库的负载均衡分散访问措施,mysql-proxy可以做到,缺省就具有了简单的均衡功能,它自带的均衡功能是当有多台MySQL服务器的时候,进行逐个访问的原则,比如有A、B两台MySQL服务器,那么第一个连接就访问A,第二个连接访问B,第三个连接访问A,一次分布,达到A、B两台MySQL访问均衡。

对于mysql-proxy这个功能,我们进行检测一下。增加一个Lua检测脚本 test-conn.lua,就一个函数:

 

 

 


 

 

执行:

 

在windows上调用mysql客户端连接过去,打开多个cmd窗口进行连接:mysql -u root -h 192.168.0.2 -P 3306

看到mysql-proxy服务器端输出结果:

 

现在我们来简单改进一下连接服务器连接分配的算法,就在Lua脚本中增加一个 connect_server 函数就行。
比如按照当前时间进行分布连接到两台MySQL上:

 

 

或者我们采取随机方式,在两台MySQL之间随机挑选一台:

 

 

我们客户端继续连接多次,监测连接的服务器,发现连接的机器是随机展开的:

 

 

1. 连接数据库压力测试

测试代码使用PHP5.2,测试文件 php_mysql_proxy.php 代码:

 

 

//测试1 (连续连接1w次,每次连接后不关闭连接)
test(10000);

Server: mysql-proxy 的CPU占用是从0.1%一直升到 12.4% 左右,然后结束后慢慢减下来,mysqld 的cpu占用率很低,%0.2左右
Client: 客户端在连接后马上关闭连接的状态下,一直持续到3948个连接的时候无法再连接到mysql-proxy
客户端输出:

 

//测试2(连续连接1w次,每次连接后不关闭连接)
test(10000, false);

Server: mysql-proxy 的CPU占用是从0.1%一直升到 14.5% 左右,然后结束后慢慢减下来, mysqld 的cpu占用率也很低,%0.2左右
Client: 客户端在连接后马上不关闭连接的状态下,一直持续到3946个连接的时候无法再连接到mysql-proxy,基本跟关闭连接的最终处理数量差不多
输出信息

 

 

2. 执行查询测试

测试脚本,php_mysql_proxy.php,代码如下:

 

//执行测试1
$start_time = microtime_float();
test1();
$end_time = microtime_float();
echo "/nExecute Time: ". ($end_time - $start_time) ."/n";

测试结果:PHP执行时间和服务器端cpu占用率
Execute Time: 39.4633390903
mysql-proxy: 17.56%
mysqld-1: 5.26%
mysqld-2: 2.12%

//执行测试2
$start_time = microtime_float();
test2();
$end_time = microtime_float();
echo "/nExecute Time: ". ($end_time - $start_time) ."/n";

测试结果:PHP执行时间和服务器端cpu占用率
Execute Time: 62.6189789772
mysql-proxy: 19.09%
mysqld-1: 6.25%
mysqld-2: 3.08%

 

原创粉丝点击