proxy負載均衡、讀寫分離

如何在客戶端應用的時候,路由語句.

一般用兩種方法

1: 直接在PHPmysql類做判斷,最簡單,不用額外加軟件

比如discuz論壇.

image.png


2:用集羣中間件

比如官方的mysql_proxy

,還有國產的中間件  amoeba


image.png

原理:不管用了多少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/

image.png

查看幫助文檔:

image.png

先要proxy連接各mysql,先做個負載均衡

image.png

在另一臺機器上連接proxy(注意,端口是4040):

image.png

然後就可以操作數據庫了,打開多個客戶端,連接proxy 4040,分別insert數據:

image.png(注意:proxy的均衡不是語句方面的均衡,而是連接上的均衡。比如:連接若干個連接池,當前連的是哪個mysql就操作哪個。語句層面的均衡,容易帶來數據不一致)

讀寫分離:

image.png

(-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:指定讀寫分析腳本)

注意,腳本中有個設置,它有個最小,最大連接,:

image.png

image.png








實戰: 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客戶就可以,因爲proxymysql的前端代理

注意proxy的端口是4040

mysql -h proxyIP -P 4040 -u username -p password


在連接上之後,sql查詢,卻總是往某1mysql 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  


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章