2021-05-12 14:32:11
在linux中實現MySQL代理的讀寫分離
所謂讀寫分離:使用者只需要存取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上確認用戶端新建的庫、表是否存在,如果存在說明代理已經生效並且可以實現讀寫分離:
相關文章