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