mysql-proxy实现读写分离-简单配置

由于工作需要想搭建个mysql读写分离环境,上网看了很多人写的博客都说现在读写分离还不是很成熟,如果流量太大估计不大好。

mysql-proxy:10.1.1.6
mysql写:10.1.1.4
mysql读:10.1.1.5

mysql-proxy机子上:

安装mysql
tar zxvf mysql-5.1.36.tar.gz
cd mysql-5.1.36
./configure --prefix=/usr/local/mysql
make && make install


安装readline
产看:$rpm -qa | grep readline
没有的话yum----

安装LUA
#tar zxvf lua-5.1.4.tar.gz
#cd lua-5.1.4
#vi Makefile  #修改安装路径为: INSTALL_TOP= /usr/local/lua
#make linux install


安装 libevent
tar zxvf libevent-1.4.14b-stable.tar.gz
cd libevent-1.4.14b-stable
./configure --prefix=/usr/local/libevent
make
make install

编译安装glib-2.24.2.tar.gz
本人原来版本是2.12,太低了,需要升级才能安装,后来安装了glib2.8,但编译时候提示2.12>2.8 ???很奇怪,后来安装了2.24就可以了。
#rpm -e --nodeps glib2 强制删除原来的GLIB2 
# cd glib-2.24.2
# ./configure --prefix=/usr

在安装glib新的版本的过程中,还可能会遇到这样的问题:
gconvert.c:48:2: error: #error GNU libiconv not in use but included iconv.h is from libiconv

#./configure --prefix=/usr -enable-iconv=no -with-libiconv=gnu  加入此参数顺利编译
# make&make install

 
安装mysql-proxy

设置环境变量.
vim/etc/profile
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"
export PKG_CONFIG_PATH=/usr/lib/pkgconfig

运行
#source /etc/profile
否则要关闭SHELL才能生效

#tar zxvf  mysql-proxy-0.8.1.tar.gz
#cd  mysql-proxy-0.8.1
#./configure --prefix=/usr/local/mysql-proxy --with-mysql=/usr/local/mysql --with-lua
# make
# make install

或:(其实和上面一样)
---------------------------------------------
#tar zxvf  mysql-proxy-0.8.1.tar.gz
#cd  mysql-proxy-0.8.1
#env LUA_CFLAGS='-I/usr/local/lua/include'
LUA_LIBS='-L/usr/local/lua/lib -llua -ldl' \
CFLAGS='-I/usr/local/include' \
LDFLAGS='-L/usr/local/lib -lm' \
PKG_CONFIG_PATH=/usr/local/lib/pkgconfig \
./configure \
-prefix=/usr/local/mysql-proxy \
-with-mysql=/usr/local/mysql \
-with-lua
----------------------------------------------
#vi /etc/profile
#export PATH=$PATH:/usr/local/mysql-proxy/bin
#source /etc/profile
安装完毕

 


启动mysql-proxy
#/usr/local/mysql-proxy/bin/mysql-proxy  --daemon --admin-username=root --admin-password=123456 --proxy-read-only-backend-addresses=10.1.1.5:3306 --proxy-backend-addresses=10.1.1.4:3306 --max-open-files=1024 --proxy-lua-script=/usr/local/mysql-proxy/share/doc/mysql-proxy/rw-splitting.lua --admin-lua-script=/usr/local/mysql-proxy/share/doc/mysql-proxy/rw-splitting.lua

我的默认路径找不到rw-splitting.lua  所以从其他地方找了一个,mysql-proxy现在很多人不敢用在生产环境其实就是就个脚本跟不上. 附件是我的脚本,拷到 /usr/local/mysql-proxy/share/doc/mysql-proxy/ 下

–daemon:指定mysql-proxy为一个daemon
–keepalive:mysql-proxy有时候会自动停止服务的情况,加上此参数后就解决这个问题
–admin-username:指定MySQL Proxy管理者端(port:4041)的登入帐号
–admin-password:指定MySQL Proxy管理者端(port:4041)的登入密码
–proxy-backend-addresses:指定写mysql的位置及端口
–proxy-read-only-backend:指定读mydql的位置及端口,有多台读mysql时,在后面加多一条参数 -proxy–read-only-backend XXXXXX.XXX.xx.xx:3306就可以了

–log-file:指定储存MySQL Proxy log的档案位置
–log-level:指定要记录log的等级
–max-open-files:指定最大档案开启数为1024,否则为有【could not raise RLIMIT_NOFILE to 8192, Invalid

argument (22). Current limit still 1024.】的log讯息出现
–proxy-lua-script:指定MySQL Proxy要套用那一个script

 官网提供的启动脚本:http://forge.mysql.com/wiki/MySQL_Proxy_init

启动遇到的问题:
 (critical) admin-plugin.c:579: --admin-lua-script needs to be set, <install-dir>/lib/mysql-

proxy/lua/admin.lua may be a good value
2010-11-30 19:29:12: (critical) mainloop.c:267: applying config of plugin admin failed
2010-11-30 19:29:12: (critical) mysql-proxy-cli.c:596: Failure from chassis_mainloop. Shutting down.

启动加入:--admin-lua-script=/usr/local/mysql-proxy/share/doc/mysql-proxy/rw-splitting.lua

could not raise RLIMIT_NOFILE to 8192, Invalid argument (22). Current limit still 1024
启动加入:--max-open-files=1024

 

-------------------------------------------        -  测   试-         -----------------------------

vim /usr/src/mysql-proxy/share/doc/mysql-proxy/rw-splitting.lua

if not proxy.global.config.rwsplit then
        proxy.global.config.rwsplit = {
                min_idle_connections = 4,
                max_idle_connections = 8,
讲4   8 改成1,因为mysql-proxy默认要有四个用户以上才去读写分离的。所以我们改小一点好测试,多打开几个端口去连mysql-proxy

读写的mysql都授权alex权限
mysql> grant all on *.* to 'alex'@'%' identified by '123';

mysql> flush privileges;
 

在client端登入  mysql -ualex -p123 -h 10.1.1.6 -P 4040

insert into ....
然后进入:10.1.1.4 看看是否增加了,

select 刚刚增加记录的表,发现没有增加记录,说明查询只能查到10.1.1.5

好了。最后将写mysql 和 读mysql做成A-B 主从复制。。。。。。。。。

----------------------------------------------------------------------------------------------------

 

本文出自 “小才” 博客,谢绝转载!

你可能感兴趣的:(mysql,数据库,职场,休闲,mysql-proxy)