proxy负载均衡、读写分离
如何在客戶端應用的時候,路由語句.
一般用兩種方法
1: 直接在PHP的mysql類做判斷,最簡單,不用額外加軟件
比如discuz論壇.
2:用集群中間件
比如官方的mysql_proxy
,還有國產的中間件 ?amoeba
原理:不管用了多少mysql,程序都是和proxy通信
實戰: mysql 讀寫分離 ?,mysql_proxy實現
?
下載安裝mysql_proxy:
http://mysql.cdpa.nsysu.edu.tw/Downloads/MySQL-Proxy/mysql-proxy-0.8.3-linux-glibc2.3-x86-64bit.tar.gz
?
解壓后, 該目錄包含已經編譯好的二進制文件,將解壓后的目錄移動到/user/local/
查看幫助文檔:
先要proxy連接各mysql,先做個負載均衡:
在另一臺機器上連接proxy(注意,端口是4040):
然后就可以操作數據庫了,打開多個客戶端,連接proxy 4040,分別insert數據:
(注意:proxy的均衡不是語句方面的均衡,而是連接上的均衡。比如:連接若干個連接池,當前連的是哪個mysql就操作哪個。語句層面的均衡,容易帶來數據不一致)
讀寫分離:
(-b 192.168.0.199:指定199服務器mysql為寫。-r 192.168.0.200:3306:指定200服務器mysql為讀。-s /user/locl/mysql-proxy/share/doc/mysql-proxy/rw-splitting.lua:指定讀寫分析腳本)
注意,腳本中有個設置,它有個最小,最大連接,:
實戰: mysql 讀寫分離 ?,mysql_proxy實現
?
下載安裝mysql_proxy:
http://mysql.cdpa.nsysu.edu.tw/Downloads/MySQL-Proxy/mysql-proxy-0.8.3-linux-glibc2.3-x86-64bit.tar.gz
?
解壓后, 該目錄包含已經編譯好的二進制文件 .
?
1: 利用mysql_proxy實現負載均衡
執行mysql_proxy
./mysql-proxy-path/bin/mysql-proxy \
--proxy-backend-addresses=192.168.1.199:3306 \
--proxy-backend-addresses=192.168.1.200:3306
?
?
2: 連接mysql_proxy,用mysql客戶就可以,因為proxy是mysql的前端代理
注意proxy的端口是4040
mysql -h “proxy的IP”?-P 4040 -u username -p password
在連接上之后,做sql查詢,卻總是往某1臺mysql server來發送------負載均衡沒體現出來?
答: 不是沒體現出來.
均衡不是體現在sql語句,一會請求mysqlA服,一會請求mysqlB服.
均衡是體現”連接”的均衡上.,
?
mysql_proxy會把連接mysql服務器的tcp/IP連接緩存進連接池,以提高性能.
在緩存池里, 緩存的連接大致是平均分配在每臺mysql服務器上.
但具體的每一個連接,始終連某臺服務器.
?
?
./bin/mysql-proxy ?\
--proxy-backend-addresses=192.168.1.199:3306 \
--proxy-read-only-backend-addresses=192.168.1.200:3306 \
--proxy-lua-script=/usr/local/mysql-proxy/share/doc/mysql-proxy/rw-splitting.lua
?
簡寫:
./bin/mysql-proxy -b=192.168.0.199:3306 -r=192.168.0.200:3306 -s=/usr/local/mysql-proxy/share/doc/mysql-proxy/rw-splitting.lua??
轉載于:https://blog.51cto.com/5660061/2376895
總結
以上是生活随笔為你收集整理的proxy负载均衡、读写分离的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: MySQL内部执行流程
- 下一篇: * 星号的居中 文本处理样式的总结