由于工作需要想搭建个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
在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 主从复制。。。。。。。。。
----------------------------------------------------------------------------------------------------
完
本文出自 “小才” 博客,谢绝转载!