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

本文档详细记录了如何在Linux环境中搭建MySQL的读写分离环境,包括安装MySQL-proxy、配置读写分离地址、升级GLIB库、解决编译问题以及启动和测试MySQL-proxy的过程。在实际操作中遇到了一些问题,如脚本不成熟、权限限制等,并给出了相应的解决方案。文章最后提到,尽管MySQL-proxy可能存在稳定性问题,但在完成基础设置后,可以进行简单的读写分离测试。
摘要由CSDN通过智能技术生成

由于工作需要想搭建个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, /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'@'%'>  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 主从复制。。。。。。。。。

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值