Linux mysql-proxy負載均衡

 

Linux mysql-proxy負載均衡

 環境:centos6.0 64位,

主要步驟:

1,搭建Master-Slaver的主從mysql數據庫集羣

2,安裝mysql-proxy的依賴軟件:gcc,glib2,readline,lua

3, 安裝和配置mysql-proxy

4,測試準備

4,實際測試。

步驟1:搭建mysql的master-slaver的主從數據庫集羣

該方法網上和我的其他幾篇文章中有介紹。

步驟2:安裝mysql的依賴軟件。

1,安裝編譯所需要的依賴包

yum -yinstall gcc gcc-c++ autoconf libevent-devel pkgconfig libtool mysql-devel makencurses ncurses-devel

2,編譯安裝glib2

cd

wgethttp://ftp.gnome.org/pub/gnome/sources/glib/2.18/glib-2.18.4.tar.gz

tar -xzvf glib-2.18.4.tar.gz

cd glib-2.18.4

./configure --prefix=/usr/local/glib-2.18.4

make

make install

3,編譯安裝readline

cd

wget ftp://ftp.cwru.edu/pub/bash/readline-6.2.tar.gz

tar -xzvf readline-6.2.tar.gz

cd readline-6.2

./configure

make

make install

4,安裝ncurses(這一步很重要,不安裝的話,第5步可能會出錯)

yum install ncurses-devel

5,編譯安裝lua

cd

wget http://www.lua.org/ftp/lua-5.1.4.tar.gz

tar -xzvf lua-5.1.4.tar.gz

cd lua-5.1.4

#指定安裝位置

sed -i 's#^INSTALL_TOP=.*#INSTALL_TOP=/usr/local/lua-5.1.4#gi' ./Makefile

#如果系統爲64位請執行下面這條命令

#sed -i 's#^CFLAGS=.*#CFLAGS= -O2 -fPIC -Wall$(MYCFLAGS)#gi' ./src/Makefile

make linux

make install

mkdir /usr/local/lua-5.1.4/lib/pkgconfig

cp ./etc/lua.pc /usr/local/lua-5.1.4/lib/pkgconfig

sed -i 's#^prefix=.*#prefix= /usr/local/lua-5.1.4#gi'/usr/local/lua-5.1.4/lib/pkgconfig/lua.pc

 步驟3:編譯安裝mysql-proxy

cd

wgethttp://cdn.mysql.com/Downloads/MySQL-Proxy/mysql-proxy-0.8.3.tar.gz

tar -xzvf mysql-proxy-0.8.3.tar.gz

cd mysql-proxy-0.8.3

exportPKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/glib-2.18.4/lib/pkgconfig:/usr/local/lua-5.1.4/lib/pkgconfig

./configure --prefix=/usr/local/mysql-proxy-0.8.3

make

make install

mkdir/usr/local/mysql-proxy-0.8.3/lib/mysql-proxy/lua/new

cp ./lib/rw-splitting.lua/usr/local/mysql-proxy-0.8.3/lib/mysql-proxy/lua/new

cp ./lib/admin-sql.lua/usr/local/mysql-proxy-0.8.3/lib/mysql-proxy/lua/new

mkdir /usr/local/mysql-proxy-0.8.3/etc

mkdir /usr/local/mysql-proxy-0.8.3/logs

驗證安裝成功:

/usr/local/mysql-proxy-0.8.3/bin/mysql-proxy --help

步驟4:測試準備。

192.168.1.209:3306作爲代理的機器

192.168.1.207:3306作爲主數據庫服務的機器

192.168.1.208:3306  作爲從數據庫服務器的機器

1,209的配置:可以放在/etc/my.cnf中

[mysql-proxy]

admin-username=root

admin-password=123456

admin-lua-script=/usr/local/mysql-proxy-0.8.3/lib/mysql-proxy/lua/admin.lua

proxy-read-only-backend-addresses=192.168.1.208:3306

proxy-backend-addresses=192.168.1.207:3306

proxy-lua-script=/usr/local/mysql-proxy-0.8.3/lib/mysql-proxy/lua/new/rw-splitting.lua

log-file=/var/log/mysql-proxy.log

log-level=debug

#daemon=true

keepalive=true

截圖如下:

2,給用戶授權。

在Master/Slave建立一個測試用戶,因爲以後客戶端發送的SQL都是通過mysql-proxy服務器來轉發,所以要確保可以從mysql-proxy服務器上登錄MySQL主從庫,分別在主和從MySQL機器上執行如下所示:

1. mysql> grant all privileges on *.* to 'test'@'192.168.1.207' identified by 'test' with  grant option; 

2. mysql> grant all privileges on *.* to 'test'@'192.168.1.208' identified by 'test' with  grant option; 

3,爲了能夠看到讀寫分發,我們可以修改rw-splitting.lua腳本。

if not proxy.global.config.rwsplit then  
        proxy.global.config.rwsplit = {  
                min_idle_connections = 1,  
                max_idle_connections = 2,  
 
                is_debug = false 
        }  
end 

4,爲了能夠看到每個數據庫的執行記錄,我們可以對數據庫(207,208)中的每條執行語句加上日誌。

在my.cnf中加上下面的語句:

log=/var/lib/mysql/mysql.log

截圖如下:

步驟5:測試

1,在209上執行下面的語句

/usr/local/mysql-proxy-0.8.3/bin/mysql-proxy-P 192.168.1.209:3306 --defaults-file=/etc/my.cnf

查看209上的日誌如下圖,可以看到代理啓動成功了。

2,在207,208上分別打開日誌查看;

此時通過數據庫客戶端連接209,在上面新建表,向表中插入數據,查詢數據,通過日誌可以看到查詢是在208上執行的,其他的操作是在207上執行的。

208截圖:


207截圖:


3,到現在爲止可以看到mysql的代理功能完成了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章