我爱编程

Mysql-proxy

2016-08-11  本文已影响105人  杍劼

一、SQL语句路由:

如何在客户端应用的时候,路由语句,一般用两种方法:

1.直接在PHP的mysql类做判断,最简单,不用额外加软件 ,比如discuz论坛:

//可以充当sql语句路由功能的mysql类

class mysql {

    $dbm = '主服务器';

    $dbs1 = '从服务器1';

    $dbs2 = '从服务器2';

    public function query() {

        //在query中进行语句判断,分别连接不同的mysql服务器

    }

}

2.用集群中间件:比如官方的mysql_proxy ,还有国产的中间件,如淘宝开发的amoeba

二、mysql-proxy实现负载均衡+读写分离:

1.下载安装mysql-proxy:http://ftp.ntu.edu.tw/pub/MySQL/Downloads/MySQL-Proxy/mysql-proxy-0.8.5-linux-glibc2.3-x86-32bit.tar.gz

2.执行mysql-proxy:

(1).设置负载均衡:

./bin/mysql-proxy \

-P 192.168.61.145:4040 \

--proxy-backend-addresses=192.168.61.145:3306 \

--proxy-backend-addresses=192.168.61.146:3306

(2).设置读写分离:

./bin/mysql-proxy \

-P 192.168.61.145:4040 \

--proxy-backend-addresses=192.168.61.145:3306\

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

--proxy-lua-script=/opt/mysql-proxy/share/doc/mysql-proxy/rw-splitting.lua

简写:

./bin/mysql-proxy \

-b192.168.61.145:3306 \

-r192.168.61.146:3306 \

-s /opt/mysql-proxy/share/doc/mysql-proxy/rw-splitting.lua

(3).指定mysql-proxy在后台执行:

./bin/mysql-proxy \

-b192.168.61.145:3306 \

-r192.168.61.146:3306 \

-s /opt/mysql-proxy/share/doc/mysql-proxy/rw-splitting.lua \

--daemon

3.因为proxy是mysql的前端调度代理,可以通过多个cmd终端远程连接mysql-proxy:

mysql -h 192.168.61.145 -P 4040 -u root -p

注:mysql_proxy会把连接mysql服务器的tcp/IP连接缓存进连接池,以提高性能,在缓存池里,缓存的连接大致是平均分配在每台mysql服务器上,但具体的每一个连接,却始终连某台服务器;

上一篇下一篇

猜你喜欢

热点阅读