分类:
2010-07-11 22:53:39
本文是继《MYSQL主从同步配置》一文之后的又一篇文档,主要是为了实现数据库的读写操作异步进行,达到减轻DB服务器压力的目的。在进行mysql主从同步之后,数据安全性得到了提高,但当业务量不断提高之后,数据库压力日渐增加,为了降低数据库压力,因此提出了读写分离功能,具体实现方式如下:
关于主从备份配置,请参阅文章《MYSQL主从同步配置》,本人在实现主从同步的基础服务器上进行操作。
准备一台mysql-proxy服务器,环境也为centos 5.4
所需软件准备:
mysql-5.1.30.tar.gz
一、安装mysql-proxy.需要按下列顺序安装其所依赖的包:
1、安装LUA
tar zxvf lua-5.1.tar.gz
cd lua-5.1
sed -i 's#INSTALL_TOP= /usr/local#INSTALL_TOP= /usr/local/lua#' /tmp/soft/lua-5.1/Makefile
(/tmp/soft/lua-5.1/Makefile目录是我的lua解压后的目录,主要目的是把lua所有文件都安装到/usr/local/lua目录下)
make posix
make install
2、安装 libevent
tar zxvf libevent-1.1a.tar.gz
cd libevent-1.1a
./configure --prefix=/usr/local/libevent
make
make install
3、安装check
tar zxvf check-0.8.4.tar.gz
cd check-0.8.4
./configure
make
make install
4、设置安装mysql-proxy所需的环境变量.
export LUA_CFLAGS="-I/usr/local/lua/include" LUA_LIBS="-L/usr/local/lua/lib -llua -ldl" LDFLAGS="-L/usr/local/libevent/lib -lm"
export CPPFLAGS="-I/usr/local/libevent/include"
export CFLAGS="-I/usr/local/libevent/include"
在不重启系统的情况,重新加载环境变量
source /etc/profile
5、安装mysql(只安装mysql客户端即可)
tar zxvf mysql-5.0.45.tar.gz
cd mysql-5.0.45
./configure --prefix=/usr/local/mysql --without-server
make
make install
6、安装mysql-proxy
tar zxvf mysql-proxy-0.5.0.tar.gz
cd mysql-proxy-0.5.0
./configure --prefix=/usr/local/mysql-proxy --with-mysql=/usr/local/mysql5 --with-lua
Make
Make install
7、代理的配置:
/usr/local/mysql-proxy/mysql-proxy/sbin/mysql-proxy
--admin-address=:4401
--proxy-address=:3307
--proxy-read-only-backend-addresses=172.16.16.200:3306 --proxy-read-only-backend-addresses=172.16.16.201:3306 --proxy-backend-addresses=172.16.16.199:3306 --proxy-lua-script=/usr/local/mysql-proxy/share/rw-splitting.lua &
参数详解:
--admin-address=:4401 指定mysql proxy的管理端口,在这里,表示本机的4401端口
--proxy-address=:3307 指定mysql proxy的监听端口,也可以用 127.0.0.1:3307 表示
--proxy-backend-addresses指定mysql写主机的端口
--proxy-read-only-backend-addresses指定只读的mysql主机端口
--proxy-read-only-backend-addresses指定另一个只读的mysql主机端口
--proxy-lua-script指定lua脚本位置,使用的是rw-splitting脚本,用于读写分离
8、编写启动脚本:
vi /root/mysql-proxy
#!/bin/bash
LUA_PATH="/usr/local/mysql-proxy/share/?.lua"
mysql-proxy --admin-address=:4401 --proxy-address=:3307 --proxy-read-only-backend-addresses=172.1
6.16.200:3306 --proxy-read-only-backend-addresses=172.16.16.201:3306 --proxy-backend-addresses=17
2.16.16.199:3306 --proxy-lua-script=/usr/local/mysql-proxy/share/rw-splitting.lua &
给启动脚本赋于执行权限
chmod 755 mysql-proxy
9、读写分离测试:用mysql客户端程序如mysql登陆到mysql代理,然后执行读写操作,以测试读写分离的正确性。