首頁 > 軟體

在linux中實現MySQL代理的讀寫分離

2019-12-17 11:57:04

所謂讀寫分離:使用者只需要存取MySQL代理伺服器,而實際的SQL查詢、寫入操作交給後台的2台MySQL伺服器來完成 ,其中Master伺服器允許SQL查詢、寫入,Slave伺服器只允許SQL查詢

1

使用4台Centos6.5虛擬機器,如圖所示。其中192.168.4.10、192.168.4.20分別作為MySQL主、從伺服器,是整個服務的後端;另一台 192.168.4.100作為MySQL代理伺服器,是直接面向客戶的服務前端;客戶機192.168.4.120用作存取測


2

將四台機器yum源搭好,並實現相互之間可以通訊。如下圖操作:


3

安裝MySQL官方提供的mysql-proxy軟體包(由於LUA指令碼語言),需要裝lua包:如下圖



4

切換到部署後的目錄,可確認相關目錄、可執行程式、指令碼。準備讀寫分離的LUA策略指令碼如下圖操作:


5

啟動mysql-proxy代理服務,分別指定讀、寫伺服器,相關操作如下:

1.[root@pxysvr ~]# cd /usr/local/mysql-proxy/ 

2.[root@pxysvr mysql-proxy]# bin/mysql-proxy -P 192.168.4.100:3306

     -b 192.168.4.10:3306   -r 192.168.4.20:3306    -s rw-splitting.lua & 

確認是否在執行,如圖所示:



6

測試通過mysql-proxy的讀寫分離,在MySQL Master伺服器上設定使用者授權

以root使用者為例,允許其從192.168.4.0/24網段的客戶機遠端存取。首先登入到Master伺服器新增下列授權:



7

從客戶機192.168.4.120存取MySQL資料庫注意連線的是mysql-proxy伺服器,而並不是Master或Slave,測試發現可以遠端登入mysql伺服器中,如圖所示


8

測試資料庫寫入操作和資料庫讀取操作如下圖操作:


9

在Master和Slave上確認用戶端新建的庫、表是否存在,如果存在說明代理已經生效並且可以實現讀寫分離:




IT145.com E-mail:sddin#qq.com