MySQL-Proxy簡(jiǎn)介
mysql-proxy是mysql官方提供的mysql中間件服務(wù),上游可接入若干個(gè)mysql-client,后端可連接若干個(gè)mysql-server。它使用mysql協(xié)議,任何使用mysql-client的上游無(wú)需修改任何代碼,即可遷移至mysql-proxy上。mysql-proxy最基本的用法,就是作為一個(gè)請(qǐng)求攔截,請(qǐng)求中轉(zhuǎn)的中間層:

進(jìn)一步的,mysql-proxy可以分析與修改請(qǐng)求。攔截查詢(xún)和修改結(jié)果,需要通過(guò)編寫(xiě)Lua腳本來(lái)完成。mysql-proxy允許用戶(hù)指定Lua腳本對(duì)請(qǐng)求進(jìn)行攔截,對(duì)請(qǐng)求進(jìn)行分析與修改,它還允許用戶(hù)指定Lua腳本對(duì)服務(wù)器的返回結(jié)果進(jìn)行修改,加入一些結(jié)果集或者去除一些結(jié)果集均可。
根本上,mysql-proxy是一個(gè)官方提供的框架,具備良好的擴(kuò)展性,可以用來(lái)完成:
- sql攔截與修改
- 性能分析與監(jiān)控
- 讀寫(xiě)分離
- 請(qǐng)求路由
下載

需求
- 1臺(tái)MySQL-Proxy機(jī)器,IP:192.168.1.106
- 1臺(tái)MySQl主服務(wù)器(可讀可寫(xiě)),IP:192.168.1.107
- 1臺(tái)MySQL從服務(wù)器(只讀),IP:192.168.1.109
解壓MySQL-Proxy
在192.168.1.106上解壓:
mysql-proxy-0.8.5-linux-el6-x86-64bit.tar.gz

重命名文件

MySQL配置
創(chuàng)建mysql-proxy.cnf
vim mysql-proxy.cnf
[mysql-proxy]
admin-username=root #admin用戶(hù)名
admin-password=root admin密碼
proxy-address=192.168.1.106:4040 # 代理地址
proxy-backend-addresses=192.168.1.107:3306 #mysql主服務(wù)器ip地址,默認(rèn)端口3306
proxy-read-only-backend-addresses=192.168.1.109:3306 #mysql從服務(wù)器ip地址,有多個(gè)逗號(hào)隔開(kāi) ip:port,ip:port,ip:port
proxy-lua-script=/cyb/soft/mysql-proxy/share/doc/mysql-proxy/rw-splitting.lua #lua位置
log-file=/cyb/soft/mysql-proxy/log/mysql-proxy.log #日志文件存儲(chǔ)路徑
log-level=debug
daemon=true # mysql-proxy以守護(hù)進(jìn)程方式運(yùn)行
keepalive=true #保持連接啟動(dòng)進(jìn)程會(huì)有2個(gè), 一號(hào)進(jìn)程用來(lái)監(jiān)視二號(hào)進(jìn)程

創(chuàng)建log目錄

修改mysql-proxy.cnf文件的權(quán)限
chmod 660 mysql-proxy.cnf

修改rw-splitting.lua
vim /cyb/soft/mysql-proxy/share/doc/mysql-proxy/rw-splitting.lua


min_idle_connections:最小閑置連接數(shù)
max_idle_connections:最大閑置連接數(shù)
MySQL-Proxy啟動(dòng)
./mysql-proxy --defaults-file=/cyb/soft/mysql-proxy.cnf

測(cè)試
在192.168.1.106上關(guān)閉防火墻
service iptables stop
chkconfig iptables off


演示過(guò)程中,有2次連不上,原因不明,還有待查證,目前功能是已經(jīng)實(shí)現(xiàn)了,注意,此時(shí)連mysql-proxy的端口已經(jīng)不是3306了,是4040