環境:
mysql 主庫192.168.160.250
mysql 從庫 192.168.160.233
mysql-proxy 192.168.110.110
安裝依賴包:
wget http://www.lua.org/ftp/lua-5.1.4.tar.gz
tar zxvf lua-5.2.3.tar.gz
cd lua-5.2.3
make linux
此時如果出現
lua.c:67:31: fatal error: readline/readline.h: No such file ordirectory
說明缺少libreadline-dev依賴包
執行:yum install readline-devel
下載下傳安裝proxy:
wget http://mysql.cdpa.nsysu.edu.tw/Downloads/MySQL-Proxy/mysql-proxy-0.8.4-Linux-rhel5-x86-64bit.tar.gz
tar zxvf mysql-proxy-0.8.3-linux-rhel5-x86-64bit.tar.gz -C /usr/local/
cd/usr/local/
mv mysql-proxy-0.8.3-linux-rhel5-x86-64bit/ /usr/local/mysql-proxy
配置path 路徑,添加到最後一行
vim/etc/profile
PATH= $PATH:/usr/local/mysql-proxy/bin 添加到最後一行
執行生效:
source /etc/profile
修改讀寫分離配置檔案:
vim/usr/local/mysql-proxy/share/doc/mysql-proxy/rw-splitting.lua
if not proxy.global.config.rwsplitthen
proxy.global.config.rwsplit = {
min_idle_connections = 1, #預設超過4個連接配接數時,才開始讀寫分離,改為1 測試需要
max_idle_connections = 1, #預設8,改為1測試需要
is_debug = false
}
end
啟動proxy:
mysql-proxy --proxy-read-only-backend-addresses=192.168.160.233:3306 --proxy-backend-addresses=192.168.160.250:3306 --proxy-lua-script=/usr/local/mysql-proxy/share/doc/mysql-proxy/rw-splitting.lua &
檢視是否啟動成功:
netstat-antup | grep proxy
關閉 proxy 程序:
killall -9 mysql-proxy
測試:
如果本地安裝了mysql可以:進入CMD ,
進入安裝mysql bin目錄
連結剛剛啟動的 mysql-proxy:
mysql -h 192.168.110.110 -uroot -p -P 4040
注意:兩個資料庫的使用者需要一緻(我這裡是直接用的 root ,兩台伺服器的密碼一樣),如果沒有一緻的使用者,則在兩台資料庫伺服器上執行:
grant all on *.* to '使用者名'@'192.168.110.110' identified by '密碼';
執行insert和select進行測試
可以多打開幾個視窗(cmd)進行測試,這樣容易看到效果(一般主資料庫伺服器是可讀可寫的,隻有超過了我們上面配置的min_idle_connections = 1,才會轉到隻讀資料庫讀取資料,是以這裡多開幾個用戶端就能夠看到效果了)
後續-通過msyql proxy連結亂碼解決:
修改my.cnf檔案
原來在5.1版本時
[plain] view plain copy
- [mysqld]
- skip-character-set-client-handshake
- init-connect='SET NAMES UTF8'
- default-character-set=utf8
5.5 以上
[plain] view plain copy
- [mysqld]
- init-connect='SET NAME UTF8'
- skip-character-set-client-handshake
- character-set-server=utf8