主要是將讀寫分開,讓MySQL Proxy自動判斷來源的指令中是讀取(SELECT)還是寫入(ADD、UPDATE、DELETE),然後再將寫入的動作移至Master主機,讀取的動作平均移至多台的Slave主機。
當然,如果你的程式中已經將讀取跟寫入的動作已經自動分配至各個不同的mysql,那麼你就可以忽略本篇文章。
MySQL Proxy整體架構的概念圖如下:
(圖片來源:http://kaj.arno.fi)
讓我們先來看一下 MySQL Proxy官網 對於MySQL Proxy的功能及特性的說法如下:
MySQL Proxy is a simple program that sits between your client and MySQL server(s) that can monitor, analyze or transform their communication. Its flexibility allows for unlimited uses; common ones include:
- load balancing
- failover (故障恢復)
- query analysis
- query filtering and modification
- RW Splitting (http://forge.mysql.com/wiki/MySQL_Proxy_RW_Splitting)
- … and many more
要使用MySQL Proxy除了先了解MySQL Proxy的功能外,再來就是MySQL Proxy的安裝囉
在安裝MySQL Proxy前,必須先安裝好 readline >= 5.1 ,詳細readline 的安裝方式丫忠就不再說明,尚未安裝的網友可以前往 ftp://ftp.gnu.org/gnu/readline/ 下載安裝;如果您都是用rpm安裝的話,可以用底下指令檢查看看 readline是否已經安裝:
$rpm -qa | grep readline
如果已經確定系統有readline 後,再來就是安裝LUA套件了,安裝到這邊網友可能會想說:甚麼是LUA?LUA能為MySQL Proxy做什麼事呢?
根據wiki的說法【Lua程式語言 是一個簡潔、輕量、可擴展的腳本語言】詳細請見 wiki-lua。是的,您沒有看錯,Lua是一種程式語言,看到這裡您是否有意識到當程式人員真的很歹命,什麼程式都要學,寫網站程式用PHP、Javascript,還會延伸出不同的框架(framework)像是JQuery…等,寫MySQL資料庫又有一些MySQL語法,接觸到Linux系統後,又要學一點都不人性的Shell script,現在架個MySQL Proxy又多了一個LUA程式語言,看到這裡丫忠真要給自己還有這些RD人員們拍拍手鼓勵一下了,加油加油!complain 發洩一下心情後,該做的還是要做 讓我們來看一下Lua的安裝方式吧!
LUA安裝方式
版本:5.1.4
官網下載點:http://www.lua.org/ftp/
$wget http://www.lua.org/ftp/lua-5.1.4.tar.gz
$tar xzvf lua-5.1.4.tar.gz
$cd lua-5.1.4
$vi Makefile #修改安裝路徑,本範例安裝路徑為 INSTALL_TOP= /usr/local/lua
$make linux install
依據上述指令即可安裝LUA,之後在/usr/local/lua就會發現LUA相關的檔案。
安裝完LUA後,再來就是安裝MySQL Proxy套件囉,在安裝MySQL Proxy前,請先確定您的系統上已經有安裝MySQL(廢話@@)
MySQL Proxy安裝方式
版本:0.8.0
官網下載點:http://dev.mysql.com/downloads/mysql-proxy/
請先至官網下載 0.8.0 版本的MySQL Proxy,本範例使用 Source code的安裝方式
$ tar xzvf mysql-proxy-0.8.0.tar.gz
$ cd mysql-proxy-0.8.0
$ env LUA_CFLAGS=’-I/usr/local/lua/include’ \
> LUA_LIBS=’-L/usr/local/lua/lib -llua -ldl’ \
> CFLAGS=’-I/usr/local/include’ \
> LDFLAGS=’-L/usr/local/lib -lm’ \
> PKG_CONFIG_PATH=/usr/local/lib/pkgconfig \
> ./configure \
> –prefix=/usr/local/mysql-proxy \
> –with-mysql=/usr/local/mysql \
> –with-lua
$ make;make install
看到上面的安裝方式或許會有一點亂,丫忠就針對這些參數說明一下,當然下指令【./configure –help】就會有英文說明了
- LUA_CFLAGS:指定LUA安裝位置的include目錄,請參照上面LUA安裝方式的INSTALL_TOP設定
- LUA_LIBS:指定LUA安裝位置的lib目錄,請參照上面LUA安裝方式的INSTALL_TOP設定
- CFLAGS:用來指定MySQL Proxy會用到的其他套件的 include目錄
- LDFLAGS:用來指定MySQL Proxy會用到的其他套件的 lib目錄
- PKG_CONFIG:有一些版本訊息會放在pkgconfig目錄中,設定pkgconfig目錄位置,告訴MySQL Proxy去參照各套件的版本及位置
- –prefix:mysql proxy的安裝位置 @@
- –with-mysql:指定mysql的安裝位置