Welcome 微信登录

首页 / 数据库 / MySQL / MySQL Proxy快速实现读写分离以及负载均衡

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/?.luamode=$1
if [ -z "$mode" ] ; then
  mode="start"
ficase $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 -P3307mysql> 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 = 3MySQL Proxy 的详细介绍:请点这里
MySQL Proxy 的下载地址:请点这里相关阅读:MySQL Proxy读写分离实战 http://www.linuxidc.com/Linux/2008-09/15656.htm在CentOS 5.2下安装最新的MySQL Proxy http://www.linuxidc.com/Linux/2009-03/18907.htmRHEL5.5下MySQL Proxy 安装 http://www.linuxidc.com/Linux/2011-11/47630.htmmysql proxy、mysql-mmm实现读写分离高可用性 http://www.linuxidc.com/Linux/2012-09/71010.htmMySQL Proxy 安装与读写分离体验MySQL DATE_FORMATE函数内置字符集的坑相关资讯      MySQL Proxy  读写分离 
  • 利用MySQL-Proxy进行MySQL数据库的  (08/05/2015 07:51:53)
  • MySQL Proxy 0.8.4 发布  (01/12/2014 08:33:01)
  • MySQL Proxy  (01/12/2014 08:20:36)
  • MariaDB Proxy读写分离的实现  (05/06/2014 09:44:00)
  • MySQL Proxy 安装与读写分离体验  (01/12/2014 08:25:24)
  • MySQL Proxy 0.8.3 发布  (08/24/2012 17:17:12)
本文评论 查看全部评论 (0)
表情: 姓名: 字数