mysql proxy使用_MySQL Proxy的安装及基本命令使用教程

MySQL Proxy最壮大的一项功能是告终“读写离别(Read/Write Splitting)”。它的原理是让主数据库处理事务性查询,而从数据库处理SELECT查询。数据库复制被用来把事务性查询导致的改变同步到集群中的从数据库。

0.必备软件:

1、LUA

能够去LUA的官方下载:dpa.nsysu.edu.tw/Downloads/MySQL-Proxy/。

可能去MYSQL官方下载源代码。

我这里下载了:

mysql.cdpa.nsysu.edu.tw/Downloads/MySQL-Proxy/mysql-proxy-0.6.0.tar.gz

3、测验过程中废止了B和C的REPLICATION。这么SQL语句一下子就看出来从哪里来的。

万一是M-S(能够先在SLAVE上举行STOP SLAVE)

1. 安装下载已经编译好的安装包,或者预编译安装包均可,在这里,使用预编译版本。

[@s1.yejr.com ~]# tar zxf mysql-proxy-0.6.0-linux-rhas4-x86.tar.gz

[@s1.yejr.com ~]# cd mysql-proxy-0.6.0-linux-rhas4-x86

#可以看到有2个目录

[@s1.yejr.com mysql-proxy-0.6.0-linux-rhas4-x86]# ls

sbin share

[@s1.yejr.com mysql-proxy-0.6.0-linux-rhas4-x86]# mv sbin/mysql-proxy /usr/local/sbin/

[@s1.yejr.com mysql-proxy-0.6.0-linux-rhas4-x86]# ls share

mysql-proxy tutorial-constants.lua tutorial-packets.lua tutorial-rewrite.lua tutorial-warnings.lua

tutorial-basic.lua tutorial-inject.lua tutorial-query-time.lua tutorial-states.lua

#将lua脚本放到/usr/local/share下,以备他用

[@s1.yejr.com mysql-proxy-0.6.0-linux-rhas4-x86]# mv share/mysql-proxy /usr/local/share/

#删除符号连接等垃圾代码

[@s1.yejr.com mysql-proxy-0.6.0-linux-rhas4-x86]# strip /usr/local/sbin/mysql-proxy

2. 启动编译一下启动管理脚本:

[@s1.yejr.com ~]# vi /etc/init.d/mysql-proxy

#!/bin/sh

export LUA_PATH=/usr/local/share/mysql-proxy/?.lua

mode=$1

if [ -z "$mode" ] ; then

mode="start"

fi

case $mode in

'start')

mysql-proxy --daemon \

--admin-address=:4401 \

--proxy-address=:3307 \

--proxy-backend-addresses=:3306 \

--proxy-read-only-backend-addresses=192.168.133.232:3306 \

--proxy-read-only-backend-addresses=10.10.74.61:3306 \

--proxy-lua-script=/usr/local/share/mysql-proxy/rw-splitting.lua

;;

'stop')

killall mysql-proxy

;;

'restart')

if $0 stop ; then

$0 start

else

echo "retart failed!!!"

exit 1

fi

;;

esac

exit 0

现在解释一下启动脚本:

--daemon 采用daemon方式启动

--admin-address=:4401 指定mysql proxy的管理端口,在这里,表示本机的4401端口

--proxy-address=:3307 指定mysql proxy的监听端口,也可以用 127.0.0.1:3307 表示

--proxy-backend-addresses=:3306 指定mysql主机的端口

--proxy-read-only-backend-addresses=192.168.1.1:3306 指定只读的mysql主机端口

--proxy-read-only-backend-addresses=192.168.1.2:3306 指定另一个只读的mysql主机端口

--proxy-lua-script=/usr/local/share/mysql-proxy/rw-splitting.lua 指定lua脚本,在这里,使用的是rw-splitting脚本,用于读写分离

完整的参数可以运行以下命令查看:

mysql-proxy --help-all

运行以下命令启动/停止/重启mysql proxy:

[@s1.yejr.com ~]# /etc/init.d/mysql-proxy start

[@s1.yejr.com ~]# /etc/init.d/mysql-proxy stop

[@s1.yejr.com ~]# /etc/init.d/mysql-proxy restart

3. 试用

[@s1.yejr.com ~]# mysql -h127.0.0.1 -uroot -P3307

mysql> show processlist;

+-------+------+----------------+------+---------+------+-------+------------------+

| Id | User | Host | db | Command | Time | State | Info |

+-------+------+----------------+------+---------+------+-------+------------------+

| 30052 | root | localhost:9656 | NULL | Query | 0 | NULL | show processlist |

+-------+------+----------------+------+---------+------+-------+------------------+

可以看到,产生了一个新连接。

用sysbench测试一下,看会不会挂掉:

[@s1.yejr.com ~]# sysbench --test=oltp --mysql-table-engine=innodb --oltp-table-size=1000000 \

--mysql-socket=/tmp/mysql.sock --mysql-user=root --mysql-db=test prepare

[@s1.yejr.com ~]# sysbench --test=oltp --mysql-table-engine=innodb --oltp-table-size=1000000 \

--mysql-socket=/tmp/mysql.sock --mysql-user=root --mysql-db=test run

.........

.........

Threads fairness:

events (avg/stddev): 10000.0000/0.00

execution time (avg/stddev): 23.0387/0.00

还好,没给大家丢脸,剩下的测试自己完成吧 :)

4. 其他mysql proxy还可以实现连接池的功能,这在很多LAMP开发中是软肋,因此,有了mysql proxy,就可以不用再担心连接数超限的问题了。

如果使用rw-splitting.lua脚本的话,最好修改以下2个参数的默认值:

min_idle_connections = 1

max_idle_connections = 3

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值