天天看點

mysql 讀寫分離 - mysql-proxy

環境:

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 讀寫分離 - mysql-proxy

進入安裝mysql bin目錄

mysql 讀寫分離 - mysql-proxy

連結剛剛啟動的 mysql-proxy:

mysql -h 192.168.110.110 -uroot -p -P 4040

注意:兩個資料庫的使用者需要一緻(我這裡是直接用的 root ,兩台伺服器的密碼一樣),如果沒有一緻的使用者,則在兩台資料庫伺服器上執行:

grant all on *.* to '使用者名'@'192.168.110.110' identified by '密碼';

mysql 讀寫分離 - mysql-proxy

  執行insert和select進行測試

可以多打開幾個視窗(cmd)進行測試,這樣容易看到效果(一般主資料庫伺服器是可讀可寫的,隻有超過了我們上面配置的min_idle_connections = 1,才會轉到隻讀資料庫讀取資料,是以這裡多開幾個用戶端就能夠看到效果了)

後續-通過msyql proxy連結亂碼解決:

修改my.cnf檔案

原來在5.1版本時

[plain]  view plain  copy  

mysql 讀寫分離 - mysql-proxy
mysql 讀寫分離 - mysql-proxy
  1. [mysqld]  
  2. skip-character-set-client-handshake  
  3. init-connect='SET NAMES UTF8'  
  4. default-character-set=utf8  

5.5 以上

[plain]  view plain  copy  

mysql 讀寫分離 - mysql-proxy
mysql 讀寫分離 - mysql-proxy
  1. [mysqld] 
  2. init-connect='SET NAME UTF8'  
  3. skip-character-set-client-handshake  
  4. character-set-server=utf8