詳解MySQL Proxy Lua安裝和測(cè)試教程
MySQL Proxy Lua的安裝和測(cè)試是本文要介紹的內(nèi)容,關(guān)于MySQL Proxy它是一個(gè)處于你的client端和MySQL server端之間的簡(jiǎn)單程序,它可以監(jiān)測(cè)、分析或改變它們的通信。它使用靈活,沒(méi)有限制,常見(jiàn)的用途包括:負(fù)載平衡,故障、查詢(xún)分析,查詢(xún)過(guò)濾和修改等等。
MySQL Proxy就是這么一個(gè)中間層代理,簡(jiǎn)單的說(shuō),MySQL Proxy就是一個(gè)連接池,負(fù)責(zé)將前臺(tái)應(yīng)用的連接請(qǐng)求轉(zhuǎn)發(fā)給后臺(tái)的數(shù)據(jù)庫(kù),并且通過(guò)使用lua腳本,可以實(shí)現(xiàn)復(fù)雜的連接控制和過(guò)濾,從而實(shí)現(xiàn)讀寫(xiě)分離和負(fù)載平衡。對(duì)于應(yīng)用來(lái)說(shuō),MySQL Proxy是完全透明的,應(yīng)用則只需要連接到MySQL Proxy的監(jiān)聽(tīng)端口即可。當(dāng)然,這樣proxy機(jī)器可能成為單點(diǎn)失效,但完全可以使用多個(gè)proxy機(jī)器做為冗余,在應(yīng)用服務(wù)器的連接池配置中配置到多個(gè)proxy的連接參數(shù)即可。
MySQL Proxy更強(qiáng)大的一項(xiàng)功能是實(shí)現(xiàn)“讀寫(xiě)分離”,基本原理是讓主數(shù)據(jù)庫(kù)處理事務(wù)性查詢(xún),讓從庫(kù)處理SELECT查詢(xún)。數(shù)據(jù)庫(kù)復(fù)制被用來(lái)把事務(wù)性查詢(xún)導(dǎo)致的變更同步到集群中的從庫(kù)。
以上摘自百度百科
我看重的功能 是負(fù)載均衡,故障轉(zhuǎn)移,通過(guò)和MySQL 主從復(fù)制配合(MASTER ,SLAVE ),還可以實(shí)現(xiàn) ‘讀寫(xiě)分離’.
一、安裝
參考網(wǎng)上一堆資料,使用源碼安裝還是失敗。以后有時(shí)間再研究。轉(zhuǎn)向使用二進(jìn)制安裝,內(nèi)已包含LUA5.1等
操作系統(tǒng)為CentOS 5.5 32位,從官網(wǎng)下載MySQL Proxy 0.8.2
下載地址為:
- # wget -c http://dev.mysql.com/get/Downloads/MySQL-Proxy/mysql-proxy-0.8.2-linux-rhel5-x86-32bit.tar.gz/
- from/ftp://ftp.stu.edu.tw/pub/Unix/Database/Mysql/
- # tar mysql-proxy-0.8.2-linux-rhel5-x86-32bit.tar.gz -C /usr/local
- # mv mysql-proxy-0.8.2-linux-rhel5-x86-32bit mysql-proxy
增加路徑
- #vim ~/.bash_profile
- PATH=$PATH:$HOME/bin:/usr/local/mysql-proxy/bin
- export PATH
二、配置
下載寫(xiě)好的服務(wù)腳本:
- #wget -c http://customcode.googlecode.com/files/mysql-proxy
- # cp mysql-proxy /etc/init.d/mysql-proxy
修改
- # vim /etc/init.d/mysql-proxy
- PROXY_PATH=/usr/local/mysql-proxy/bin
改成unix模式
- :set fileformat=unix
- # chmod 755 /etc/init.d/mysql-proxy
- # chkconfig mysql-proxy on
修改配置文件
- # vi /etc/sysconfig/mysql-proxy
- # options to mysql-proxy
- # do not remove --daemon
- PROXY_OPTIONS="--proxy-backend-addresses=192.168.234.133:3306 --proxy-backend-addresses=192.168.234.132:3306 --daemon"
其它配置參考官網(wǎng)文檔
- http://dev.mysql.com/doc/refman/5.1/en/mysql-proxy-configuration.html
兩臺(tái)mysql上賦權(quán)
- grant all on *.* to "root" @ "192.168.234.131";
- flush privileges;
啟動(dòng)服務(wù)
- service mysql-proxy start
三、測(cè)試
(1)負(fù)載均衡 /etc/sysconfig/mysql-proxy 配置為
- PROXY_OPTIONS="--proxy-backend-addresses=192.168.234.133:3306 --proxy-backend-addresses=192.168.234.132:3306 --daemon"
數(shù)據(jù)庫(kù)服務(wù)器建同一張表t1 表中,數(shù)據(jù)不同,
- use test;
- CREATE TABLE `t1` (
- `iCode` int(11) NOT NULL AUTO_INCREMENT,
- `name` varchar(50) DEFAULT NULL,
- PRIMARY KEY (`iCode`)
- );
- 132
- insert into t1 (name) values ('master');
- 133
- insert into t1 (name) values ('slave');
打開(kāi)多個(gè)窗口,運(yùn)行
- mysql -h 192.168.234.131 -u -p -P 4042 -e"select name from test.t1;"
可看到不同結(jié)果,mysql-prxoy 會(huì)將查詢(xún)分配到mysql服務(wù)器
(2)故障轉(zhuǎn)移
采用1的配置,在132上停止mysql
- service mysqld stop
運(yùn)行:
- mysql -h 192.168.234.131 -u -p -P 4042 -e"select name from test.t1;"
仍能正常查詢(xún),只有133MySQL上數(shù)據(jù)。
(3)讀寫(xiě)分離
讀寫(xiě)分離需依賴(lài)LUA腳本,配置文件改為:
- PROXY_OPTIONS="--proxy-backend-addresses=192.168.234.133:3306 --proxy-read-only-backend-addresses=192.168.234.132:3306 \
- --proxy-lua-script=/usr/local/mysql-proxy/share/doc/mysql-proxy/rw-splitting.lua --keepalive --daemon"
133為可寫(xiě),132 為只讀,使用rw-splitting.lua為讀寫(xiě)分離腳本
還需配置Master(133)-Slave(132) 復(fù)制。
小結(jié):詳解MySQL Proxy Lua安裝和測(cè)試教程的內(nèi)容介紹完了,希望通過(guò)本文的學(xué)習(xí)能對(duì)你有所幫助!