標籤:mysql-proxy 實現讀寫分離
mysql-proxy 實現讀寫分離
需要先配置主從同步:五個步驟完成MySQL主從複製
主伺服器Master:192.168.179.146從伺服器Slave:192.168.179.147調度伺服器MySQL-Proxy:192.168.179.142
下載mysql-proxy
實現讀寫分離是有lua指令碼實現的,現在mysql-proxy裡面已經整合,無需再安裝
下載:https://downloads.mysql.com/archives/proxy/ 下載對應的版本
我這裡以CentOS6 64位伺服器為例
安裝mysql-proxy
我這邊為了方便使用 wget 命令下載,然後拷貝到/usr/local/下並修改目錄名為mysql-proxy。
wget https://cdn.mysql.com/archives/mysql-proxy/mysql-proxy-0.8.5-linux-el6-x86-64bit.tar.gz tar zxvf mysql-proxy-0.8.5-linux-glibc2.3-x86-32bit.tar.gzmv mysql-proxy-0.8.5-linux-glibc2.3-x86-32bit /usr/local/mysql-proxy
配置mysql-proxy
建立mysql-proxy指令碼和記錄檔存放的目錄,並把內建的管理指令碼考本過來。
cd /usr/local/mysql-proxymkdir lua #建立指令碼存放目錄mkdir logs #建立日誌目錄cp share/doc/mysql-proxy/rw-splitting.lua ./lua #複製讀寫分離設定檔cp share/doc/mysql-proxy/admin-sql.lua ./lua #複製管理指令碼
建立mysql-proxy設定檔vim /etc/mysql-proxy.cnf #建立設定檔
[mysql-proxy]user=root #運行mysql-proxy使用者admin-username=lin3615 #主從mysql共有的使用者admin-password=123456 #使用者的密碼proxy-address=192.168.179.142:4040 #mysql-proxy運行ip和連接埠(預設連接埠4040)proxy-read-only-backend-addresses=192.168.179.147 #指定後端從slave讀取資料(預設連接埠3306)proxy-backend-addresses=192.168.179.146 #指定後端主master寫入資料(預設連接埠3306)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)daemon=true #以守護進程方式運行keepalive=true #mysql-proxy崩潰時,嘗試重啟
:wq #儲存退出!
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
/usr/local/mysql-proxy/bin/mysql-proxy --defaults-file=/etc/mysql-proxy.cnf #指定我們建立的/etc/mysql-proxy.cnf設定檔啟動netstat -tupln | grep 4040 #已經啟動killall -9 mysql-proxy #關閉mysql-proxy使用
測試讀寫分離
在主伺服器建立proxy使用者用於mysql-proxy使用,從伺服器也會同步這個操作mysql> grant all on *.* to ‘lin3615‘@‘192.168.179.142‘ identified by ‘123456‘;使用用戶端串連mysql-proxymysql -u lin3615 -h 192.168.179.142 -P 4040 -p123456
mysql-proxy 實現讀寫分離