一久橙、SQL語句路由:
如何在客戶端應(yīng)用的時(shí)候,路由語句,一般用兩種方法:
1.直接在PHP的mysql類做判斷诉儒,最簡(jiǎn)單葡缰,不用額外加軟件 ,比如discuz論壇:
//可以充當(dāng)sql語句路由功能的mysql類
class mysql {
? ? $dbm = '主服務(wù)器';
? ? $dbs1 = '從服務(wù)器1';
? ? $dbs2 = '從服務(wù)器2';
? ? public function query() {
? ? ? ? //在query中進(jìn)行語句判斷忱反,分別連接不同的mysql服務(wù)器
? ? }
}
2.用集群中間件:比如官方的mysql_proxy 泛释,還有國(guó)產(chǎn)的中間件,如淘寶開發(fā)的amoeba
二缭受、mysql-proxy實(shí)現(xiàn)負(fù)載均衡+讀寫分離:
1.下載安裝mysql-proxy:http://ftp.ntu.edu.tw/pub/MySQL/Downloads/MySQL-Proxy/mysql-proxy-0.8.5-linux-glibc2.3-x86-32bit.tar.gz
2.執(zhí)行mysql-proxy:
(1).設(shè)置負(fù)載均衡:
./bin/mysql-proxy \
-P 192.168.61.145:4040 \
--proxy-backend-addresses=192.168.61.145:3306 \
--proxy-backend-addresses=192.168.61.146:3306
(2).設(shè)置讀寫分離:
./bin/mysql-proxy \
-P 192.168.61.145:4040 \
--proxy-backend-addresses=192.168.61.145:3306\
--proxy-read-only-backend-addresses=192.168.61.146:3306 \
--proxy-lua-script=/opt/mysql-proxy/share/doc/mysql-proxy/rw-splitting.lua
簡(jiǎn)寫:
./bin/mysql-proxy \
-b192.168.61.145:3306 \
-r192.168.61.146:3306 \
-s /opt/mysql-proxy/share/doc/mysql-proxy/rw-splitting.lua
(3).指定mysql-proxy在后臺(tái)執(zhí)行:
./bin/mysql-proxy \
-b192.168.61.145:3306 \
-r192.168.61.146:3306 \
-s /opt/mysql-proxy/share/doc/mysql-proxy/rw-splitting.lua \
--daemon
3.因?yàn)閜roxy是mysql的前端調(diào)度代理,可以通過多個(gè)cmd終端遠(yuǎn)程連接mysql-proxy:
mysql -h 192.168.61.145 -P 4040 -u root -p
注:mysql_proxy會(huì)把連接mysql服務(wù)器的tcp/IP連接緩存進(jìn)連接池该互,以提高性能米者,在緩存池里,緩存的連接大致是平均分配在每臺(tái)mysql服務(wù)器上,但具體的每一個(gè)連接蔓搞,卻始終連某臺(tái)服務(wù)器胰丁;