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的代理功能完成了。