MySQL Proxy Lua的安裝和測試是本文要介紹的內容,關於MySQL Proxy它是一個處於你的client端和MySQL server端之間的簡單程式,它可以監測、分析或改變它們的通訊。它使用靈活,沒有限制,常見的用途包括:Server Load Balancer,故障、查詢分析,查詢過濾和修改等等。
MySQL Proxy就是這麼一個中介層代理,簡單的說,MySQL Proxy就是一個串連池,負責將前台應用的串連請求轉寄給背景資料庫,並且通過使用lua指令碼,可以實現複雜的串連控制和過濾,從而實現讀寫分離和Server Load Balancer。對於應用來說,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為讀寫分離指令碼
還需配置Master133)-Slave132) 複製。
小結:詳解MySQL Proxy Lua安裝和測試教程的內容介紹完了,希望通過本文的學習能對你有所協助!