搭建mysql-proxy的详细步骤
第一步:检测是否安装
通过 rpm -qa | grep name(gcc) 的方式验证以下软件包是否已全部安装。
gcc* gcc-c++* autoconf* automake* zlib* libxml* ncurses-devel* libmcrypt* libtool* flex* pkgconfig*
libevent* glib* lua*
第二步:安装(第一步检测如果有就省略此步骤)
yum -y install gcc* gcc-c++* autoconf* automake* zlib* libxml* ncurses-devel* libmcrypt* libtool* flex* pkgconfig*
libevent* glib* lua*
第三步:单独下载lua
cd /data/software
wget http://www.lua.org/ftp/lua-5.1.4.tar.gz
tar zxvf lua-5.1.4.tar.gz
cd lua-5.1.4 /usr/local/
编译安装lua
cd lua-5.1.4
vim src/Makefile
在 CFLAGS= -O2 -Wall $(MYCFLAGS) 这一行记录里加上-fPIC,更改为 CFLAGS= -O2 -Wall -fPIC $(MYCFLAGS) 来避免编译过程中出现错误。
make linux
make install
(在搭建过程中如何还是出现问题,请下载
yum install -y readline-devel ncurses-devel
目前我也是不很清楚为何缺少这个,执行完,继续
make linux && make install
参考http://tieba.baidu.com/p/2188398593
)
添加环境变量
export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/lib/pkgconfig
http://m.blog.itpub.net/637517/viewspace-1766825/
第四步:安装my-proxy
(挂载/data目录)
查看linux版本
cat /proc/version
cd /data/software
(从官网上下载与服务器版本一致的二进制文件)
解压:
tar -zxvf mysql-proxy-0.8.5-linux-el6-x86-64bit.tar.gz
mv mysql-proxy-0.85-linux-el6-x86-64bit /usr/local/
cd /usr/local/mysql-proxy
创建mysql-proxy服务管理脚本文件
vim mysql-proxy
#!/bin/sh
#
# mysql-proxy This script starts and stops the mysql-proxy daemon
#
# chkconfig: - 78 30
# processname: mysql-proxy
# description: mysql-proxy is a proxy daemon to mysql
# Source function library.
. /etc/rc.d/init.d/functions
#PROXY_PATH=/usr/local/bin
PROXY_PATH=/usr/local/mysql-proxy/bin
prog="mysql-proxy"
# Source networking configuration.
. /etc/sysconfig/network
# Check that networking is up.
[ ${NETWORKING} = "no" ] && exit 0
# Set default mysql-proxy configuration.
#PROXY_OPTIONS="--daemon"
#自己数据库的地址
PROXY_OPTIONS="--proxy-backend-addresses=192.168.1.1:3306
#自己数据库的地址
--proxy-read-only-backend-addresses=192.168.1.2:3306 --proxy-lua-script=/usr/local/mysql-proxy/share/doc/mysql-proxy/rw-splitting.lua"
PROXY_PID=/usr/local/mysql-proxy/run/mysql-proxy.pid
# Source mysql-proxy configuration.
if [ -f /etc/sysconfig/mysql-proxy ]; then
. /etc/sysconfig/mysql-proxy
fi
PATH=$PATH:/usr/bin:/usr/local/bin:$PROXY_PATH
# By default it's all good
RETVAL=0
# See how we were called.
case "$1" in
start)
# Start daemon.
echo -n $"Starting $prog: "
$NICELEVEL $PROXY_PATH/mysql-proxy $PROXY_OPTIONS --daemon --pid-file=$PROXY_PID --user=mysql --log-level=debug --log-file=/usr/local/mysql-proxy/log/mysql-proxy.log
RETVAL=$?
echo
if [ $RETVAL = 0 ]; then
touch /var/lock/subsys/mysql-proxy
fi
;;
stop)
# Stop daemons.
echo -n $"Stopping $prog: "
killproc $prog
RETVAL=$?
echo
if [ $RETVAL = 0 ]; then
rm -f /var/lock/subsys/mysql-proxy
rm -f $PROXY_PID
fi
;;
restart)
$0 stop
sleep 3
$0 start
;;
condrestart)
[ -e /var/lock/subsys/mysql-proxy ] && $0 restart
;;
status)
status mysql-proxy
RETVAL=$?
;;
*)
echo "Usage: $0 {start|stop|restart|status|condrestart}"
RETVAL=1
;;
esac
exit $RETVAL
配置详情参考http://m.blog.itpub.net/637517/viewspace-1766825/
创建 mkdir init.d
cp mysql-proxy init.d/
chmod +x mysql-proxy
mkdir /usr/local/mysql-proxy/run
mkdir /usr/local/mysql-proxy/log
mkdir /usr/local/mysql-proxy/scripts
第五步:配置并使用rw-splitting.lua读写分离脚本
vim /usr/local/mysql-proxy/share/doc/mysl-proxy/rw-splitting.lua
-- connection pool
if not proxy.global.config.rwsplit then
proxy.global.config.rwsplit = {
min_idle_connections = 1, //默认为4
max_idle_connections = 2, //默认为8
is_debug = false
}
end
第六步:启动mysql-proxy
/usr/local/mysql-proxy/init.d/mysql-proxy start
第七步:查看日志
tail -f /usr/local/mysql-proxy/log/mysql-proxy.log
显示已经启动完成。
第八步:测试验证结果
创建用于读写分离的数据库连接用户
登陆主数据库服务器:192.168.1.1
mysql> GRANT ALL ON *.* TO 'proxy1'@'proxy服务器' IDENTIFIED BY‘111111';
由于我们配置了主从复制功能,因此从数据库服务器192.168.56.103上已经同步了此操作
为了清晰的看到读写分离的效果,需要暂时关闭MySQL主从复制功能
登陆从数据库服务器192.168.1.2
关闭Slave同步进程
mysql> stop slave;
连接MySQL-Proxy
mysql -uproxy1 -p111111 -P4040 -h192.168.1.3
查看自己数据库数据
参考资料
http://m.blog.itpub.net/637517/viewspace-1766825/
http://blog..net/e421083458/article/details/19697701
http://blog..net/heizistudio/article/details/26457225
http://www.iyunv.com/thread-8775-1-1.html
http://blog..net/edwzhang/article/details/8475624