MySQL Proxy,顧名思義,MySQL的服務代理,我們的客戶端通過MySQL的代理去操作數據庫,從而不必關系代理後面的架構。
實際應用中,可以數據庫負載均衡,Proxy能夠自動的平均分發用戶的請求到代理後端的各個數據庫服務器,我們可以完成各個數據庫的讀寫分離,由於MySQL Proxy支持lua腳本語言,所以配置相當靈活,我們可以通過Proxy轉發用戶哪些簡單的查詢個新語句到MySQL Cluster的服務器上,把復雜的查詢語句轉發到一台單獨的服務器上。
關於MySQL Proxy的更多相關信息,讀者可以通過以下地址獲取更多信息:
http://forge.mysql.com/wiki/MySQL_Proxy_OvervIEw
如果讀者喜歡編譯安裝的話,請移步去看這篇文檔:
http://hi.baidu.com/thinkinginlamp/blog/item/f96559821fbda8aa0cf4d200.htm
這裡主要講述使用方面的,所以我直接yum安裝它,我覺得如果你編譯查錯水平不是很高的話,那就下載rpm包進行安裝,首先把它使用起來,以免編譯不過打消我們的積極性。
三、配置為了容易理解,我這裡給出的結構圖是四台主機電腦來實驗MySQL Proxy,結構如下:
但是,我的試驗環境不允許我這麼做,我只有兩台主機,所以其中一台必須要同時安裝數據庫和代理。
主機A: 192.168.0.11 B: 192.168.0.32 安裝MySQL ,我們的MySQL Proxy安裝在B主機上。
下面我們開始配置Proxy,首先按照官方的文檔,首先我們去編輯服務啟動腳本/etc/init.d/MySQL-proxy,參照官方文檔,內容只需修改一個地方,其它照搬官方的配置文檔如下:
PROXY_PATH=/usr/sbin #唯一需要修改的地方,MySQL-proxy程序的目錄
這個文檔編輯好後保存退出,我們還需要給它執行權限:
chmod +x /etc/init.d/MySQL-proxy
接下來,我們編輯啟動參數的配置文件:/etc/sysconfig/MySQL-proxy
# options to MySQL-proxy
# do not remove --daemon
PROXY_OPTIONS="--proxy-backend-addresses=192.168.0.11:3306 --proxy-backend-addresses=192.168.0.32:3306 Cdaemon"
後面跟得兩個地址是我們的兩台SQL服務器的地址,以守護模式運行。
接下來,由於代理服務需要去訪問這兩個主機,所以我們需要在兩個MySQL服務裡給它授權:
grant all on *.* to [email protected]
flush privileges;
四、測試授權做好以後就可以重啟各個服務器了,重啟完了我們從客戶端登錄:
MySQL -h192.168.0.32 -P4040
再開一個終端,同樣執行以上的登錄命令。
操作完成以後,我使用netstat命令:
# netstat -anp | grep 3306
tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 19677/MySQLd
tcp 0 0 192.168.0.32:35225 192.168.0.11:3306 ESTABLISHED 19826/MySQL-proxy
tcp 0 0 192.168.0.32:34149 192.168.0.32:3306 ESTABLISHED 19826/MySQL-proxy
tcp 0 0 192.168.0.32:3306 192.168.0.32:34149 ESTABLISHED 19677/MySQLd
你可以看到,MySQL-proxy開了兩個端口,分別連接兩個數據節點服務器。
進去以後就已經是通過代理的一個服務了,可以自己更新表數據試一下,你會發現兩個終端都是不一樣的返回結果。