詳解MySQL Proxy Lua安裝和測試教程
MySQL Proxy Lua的安裝和測試是本文要介紹的內容,關于MySQL Proxy它是一個處于你的client端和MySQL server端之間的簡單程序,它可以監測、分析或改變它們的通信。它使用靈活,沒有限制,常見的用途包括:負載平衡,故障、查詢分析,查詢過濾和修改等等。
MySQL Proxy就是這么一個中間層代理,簡單的說,MySQL Proxy就是一個連接池,負責將前臺應用的連接請求轉發給后臺的數據庫,并且通過使用lua腳本,可以實現復雜的連接控制和過濾,從而實現讀寫分離和負載平衡。對于應用來說,MySQL Proxy是完全透明的,應用則只需要連接到MySQL Proxy的監聽端口即可。當然,這樣proxy機器可能成為單點失效,但完全可以使用多個proxy機器做為冗余,在應用服務器的連接池配置中配置到多個proxy的連接參數即可。
MySQL Proxy更強大的一項功能是實現“讀寫分離”,基本原理是讓主數據庫處理事務性查詢,讓從庫處理SELECT查詢。數據庫復制被用來把事務性查詢導致的變更同步到集群中的從庫。
以上摘自百度百科
我看重的功能 是負載均衡,故障轉移,通過和MySQL 主從復制配合(MASTER ,SLAVE ),還可以實現 ‘讀寫分離’.
一、安裝
參考網上一堆資料,使用源碼安裝還是失敗。以后有時間再研究。轉向使用二進制安裝,內已包含LUA5.1等
操作系統為CentOS 5.5 32位,從官網下載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
二、配置
下載寫好的服務腳本:
- #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"
其它配置參考官網文檔
- http://dev.mysql.com/doc/refman/5.1/en/mysql-proxy-configuration.html
兩臺mysql上賦權
- grant all on *.* to "root" @ "192.168.234.131";
- flush privileges;
啟動服務
- service mysql-proxy start
三、測試
(1)負載均衡 /etc/sysconfig/mysql-proxy 配置為
- PROXY_OPTIONS="--proxy-backend-addresses=192.168.234.133:3306 --proxy-backend-addresses=192.168.234.132:3306 --daemon"
數據庫服務器建同一張表t1 表中,數據不同,
- 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');
打開多個窗口,運行
- mysql -h 192.168.234.131 -u -p -P 4042 -e"select name from test.t1;"
可看到不同結果,mysql-prxoy 會將查詢分配到mysql服務器
(2)故障轉移
采用1的配置,在132上停止mysql
- service mysqld stop
運行:
- mysql -h 192.168.234.131 -u -p -P 4042 -e"select name from test.t1;"
仍能正常查詢,只有133MySQL上數據。
(3)讀寫分離
讀寫分離需依賴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為可寫,132 為只讀,使用rw-splitting.lua為讀寫分離腳本
還需配置Master(133)-Slave(132) 復制。
小結:詳解MySQL Proxy Lua安裝和測試教程的內容介紹完了,希望通過本文的學習能對你有所幫助!