MysqL讀寫分離的實現-Mysql proxy中介軟體的使用

OldBoy~發表於2017-12-27

為什麼要架設讀寫分離,這裡不做多餘的說明,想了解具體原理,請百度或者參考其他帖子。在這裡只做大概的配置說明,測試中使用三臺伺服器

192.168.136.142   主伺服器

192.168.136.143  從伺服器

192.168.136.144  中間伺服器

解壓安裝的方式安裝

https://downloads.mysql.com/archives/proxy/,安裝Mysql proxy 需要確保伺服器安裝過lua,因為Mysql依賴於lua5.1以上版本,rpm  -q lua,看看是否安裝,還依賴libevent,這裡我選擇的還是0.83版本,比較穩定。mysql-proxy-0.8.3-linux-glibc2.3-x86-64bit.tar.gz

在中間伺服器 下載完成之後,解壓並移動目錄

tar -zxvf mysql-proxy-0.8.3-linux-glibc2.3-x86-64bit
mv ./mysql-proxy-0.8.3-linux-glibc2.3-x86-64bit /usr/local/mysql-proxy/

進入/usr/local/mysql-proxy目錄,建立指令碼存放目錄和日誌目錄,並把解壓目錄後的相關檔案拷貝到對應目錄。

cd /usr/local/mysql-proxy
mkdir lua                             #建立指令碼存放目錄
mkdir logs                            #建立日誌目錄
cp share/doc/mysql-proxy/rw-splitting.lua ./lua     #複製讀寫分離配置檔案
cp share/doc/mysql-proxy/admin-sql.lua ./lua        #複製管理指令碼

然後在中間伺服器配置一個mysql-proxy啟動配置檔案,並賦予執行許可權,chmod 660 /etc/mysql-porxy.cnf

vi /etc/mysql-proxy.cnf                         #建立配置檔案
//內容在下
[mysql-proxy]
user=root                                  #執行mysql-proxy使用者
admin-username=pro                                 #主從mysql共有的使用者
admin-password=pro123                             #使用者的密碼
proxy-address=192.168.136.144:4040                     #mysql-proxy執行ip和埠,不加埠,預設4040
proxy-read-only-backend-addresses=192.168.136.143          #指定後端從slave讀取資料
proxy-backend-addresses=192.168.136.142                #指定後端主master寫入資料
proxy-lua-script=/usr/local/mysql-proxy/lua/rw-splitting.lua   #指定讀寫分離配置檔案位置
admin-lua-script=/usr/local/mysql-proxy/lua/admin-sql.lua     #指定管理指令碼
log-file=/usr/local/mysql-proxy/logs/mysql-proxy.log        #日誌位置
log-level=info                                #定義log日誌級別,由高到低分別有(error|warning|info|message|debug),除錯的時候建議debug
daemon=true                                   #以守護程式方式執行
keepalive=true                              #mysql-proxy崩潰時,嘗試重啟

這裡編輯一個指令碼,用於快速啟動mysql-proxy,並賦予執行許可權

vim /etc/profile.d/mysql-proxy.sh
//內容在下
export PATH=$PATH:/usr/local/mysql-proxy/bin/
chmod 660 /etc/mysql-porxy.cnf

執行以下命令檢視幫助引數

 修改讀寫分離配置檔案

vim /usr/local/mysql-proxy/lua/rw-splitting.lua
if not proxy.global.config.rwsplit then
 proxy.global.config.rwsplit = {
  min_idle_connections = 1, #預設超過4個連線數時,才開始讀寫分離,改為1
  max_idle_connections = 1, #預設8,改為1
  is_debug = false
 }
end

啟動服務

mysql-proxy --defaults-file=/etc/mysql-proxy.cnf

檢視和關閉服務命令如下

netstat -tupln | grep 4040 #已經啟動
killall -9 mysql-proxy #關閉mysql-proxy使用

接下來還需要在主伺服器授權,在主伺服器建立proxy使用者用於mysql-proxy使用,從伺服器也會同步這個操作

mysql> grant all on *.* to 'pro'@'192.168.136.144' identified by 'pro123';

接下來使用客戶端連線中間伺服器,並測試讀寫

mysql -u pro -h 192.168.136.144 -P 4040 -p pro123

測試讀寫成功了,這裡不做說明了

相關文章