mysql-proxy读写分离不起作用

程序源自程序猿 2012-12-17 12:20:02
最近开发工作提前完成了,老大让研究一下mysql-proxy,碰到了不少问题,烦请高手指点一二 谢谢。
先说说安装环境:
均为centOS6.0系统,mysql-proxy-0.8.0,mysql-5.5.15
mysql-proxy在172.19.32.199,本机上也装有mysql,本次测试未用到
master-mysql在172.19.32.192
slave-mysql在172.19.32.191

1.安装过程遇到不少问题
服务器centos6.0,服务器不能联网,所有安装都是源码包编译安装的,找了一些文档,但是中间都出错过,最后糊里糊涂安装成功了mysql-proxy,烦请有安装过的有完整文档的给一份安装文档(ps:非连网安装文档)谢谢。
2.配置mysql-proxy
安装成功mysql-proxy之后,做了个启动配置文件vi /etc/init.d/mysql-proxy
#!/bin/bash 
export LUA_PATH=/usr/local/lib/mysql-proxy/lua/?.lua
mode=$1
if [ -z "$mode" ] ; then
mode="start"
fi
case $mode in
'start')
mysql-proxy
--keepalive=true
--admin-address=:4040
--proxy-address=:3307
--proxy-backend-addresses=172.19.32.192:3306
--proxy-read-only-backend-addresses=172.19.32.191:3306
--proxy-lua-script=/root/InstallFile/rw-splitting.lua
--log-file=/root/InstallFile/mysql-proxy.log &
;;
'stop')
killall mysql-proxy
;;
'restart')
if $0 stop ; then
$0 start
else
echo "retart failed!!!"
exit 1
fi
;;
esac
exit 0

export LUA_PATH=/usr/local/lib/mysql-proxy/lua/?.lua是mysql-proxy -V下的LUA_PATH值

mysql-proxy 0.8.0
glib2: 2.22.5
libevent: 2.0.19-stable
lua: Lua 5.1.4
LUA_PATH: /usr/local/lib/mysql-proxy/lua/?.lua
LUA_CPATH: /usr/local/lib/mysql-proxy/lua/?.so
== plugins ==
admin: 0.7.0
proxy: 0.7.0

下面是读写分离脚本rw-splitting.lua,该脚本是mysql-proxy自带脚本,我只修改了连接数
if not proxy.global.config.rwsplit then
proxy.global.config.rwsplit = {
min_idle_connections = 1,
max_idle_connections = 1,

is_debug = true
}
end

鉴于脚本比较长,这里贴上连接,大家可以下载到本机查看rw-splitting.lua
3.启动
/etc/init.d/mysql-proxy start;启动mysql-proxy
控制台什么都没输出,启动配置指定的日志文件也没日志记录..但是mysql-proxy的两个端口都已启动
netstat -lnpt
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:4040 0.0.0.0:* LISTEN 10643/mysql-proxy
tcp 0 0 0.0.0.0:4041 0.0.0.0:* LISTEN 10643/mysql-proxy

到另一台服务器登录mysql-proxy mysql -uxxx -p'mima' -P4040 -h172.19.32.199
结果发现不管是查询还是插入都操作的是199本机的mysql库。
如果停止199的mysql服务,再登录mysql-proxy的话直接报
ERROR 1105 (HY000): #07000(proxy) all backends are down
请问这是什么原因?我mysql-proxy配置文件里面没有配置199的数据库呀?还有为什么我指定的日志log-file=/root/InstallFile/mysql-proxy.log &看不到日志记录?

求解惑,求成功案例文档,先谢谢诸位了。

...全文
810 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
Eziep随笔 2014-09-24
  • 打赏
  • 举报
回复
楼主有没有解决,我也是这个问题,加我qq1950935123,谢谢
  • 打赏
  • 举报
回复
引用 5 楼 justsmilence 的回复:
引用 4 楼 gaizai 的回复:还有这篇:http://www.cnblogs.com/gaizai/archive/2012/10/23/2735556.html谢谢您的回复,主从同步目前没问题,我感觉是mysql-proxy配置文件有问题。我再看看
现在日志有作用了,我是这样改的 vi /etc/mysql-proxy.cnf
[mysql-proxy]
admin-username = zhanghu
admin-password = mima
keepalive=true
proxy-backend-addresses = 172.19.32.192:3306    
proxy-read-only-backend-addresses = 172.19.32.191:3306 
proxy-lua-script = /root/InstallFile/rw-splitting.lua 
admin-lua-script = /root/InstallFile/rw-splitting.lua
log-file = /root/InstallFile/mysql-proxy.log  
log-level = debug
vi /etc/profile增加
LUA_PATH=" /usr/local/lib/mysql-proxy/lua/?.lua"  
export LUA_PATH  
export PATH=$PATH:/usr/local /bin  
source /etc/profile vi /etc/init.d/mysql-proxy
#!/bin/bash
mode=$1
if [ -z "$mode" ] ; then   
mode="start"   
fi   
case $mode in   
start)   
mysql-proxy --defaults-file=/etc/mysql-proxy.cnf>/root/InstallFile/mysql-proxy.log &   
;;  
stop)   
killall -9 mysql-proxy    
;;    
restart)   
if $0 stop ; then    
$0 start    
else   
echo  "Restart failed!"   
exit 1   
fi   
;;   
esac    
exit 0   
现在启动可以看到日志了,登陆mysql-proxy的时候报错了 (critical) (lua-error) [/root/InstallFile/rw-splitting.lua] error loading module 'mysql.tokenizer' from file '/usr/local/lib/mysql-proxy/lua/mysql.so': dynamic libraries not enabled; check your Lua installation [string "/root/InstallFile/rw-splitting.lua"]:29: loop or previous error loading module 'proxy.tokenizer' 目前看来是lua哪里没安装好
  • 打赏
  • 举报
回复
引用 4 楼 gaizai 的回复:
还有这篇:http://www.cnblogs.com/gaizai/archive/2012/10/23/2735556.html
谢谢您的回复,主从同步目前没问题,我感觉是mysql-proxy配置文件有问题。我再看看
  • 打赏
  • 举报
回复
引用 6 楼 justsmilence 的回复:
引用 5 楼 justsmilence 的回复:引用 4 楼 gaizai 的回复:还有这篇:http://www.cnblogs.com/gaizai/archive/2012/10/23/2735556.html谢谢您的回复,主从同步目前没问题,我感觉是mysql-proxy配置文件有问题。我再看看 现在日志有作用了,我是这样改的 vi /etc/mysql-pr……
重装了lua,重装了mysql-proxy-0.8.2 启动mysql-proxy 日志正常.. 通过ssh mysql -uzhanghu -p'mima' -P4040 -h172.19.32.199 连接 查询出是proxy-backend-addresses = 172.19.32.192:3306数据,多个ssh连接mysql -uzhanghu -p'mima' -P4040 -h172.19.32.199 依然不会查询proxy-read-only-backend-addresses = 172.19.32.191:3306 数据 关掉proxy-backend-addresses = 172.19.32.192:3306库,再通过ssh连接 就连接不上 all backends are down
  • 打赏
  • 举报
回复
大哥,题目不够清楚吗...mysql读写分离呀
引用 1 楼 bonlog 的回复:
你讲了这么多的理论,主要工作是什么? 你要实现什么功?
这里采用的是mysql官方的mysql-proxy来实现读写分离,中间遇到好多问题,这里求搞过的高手来解答问题...谢谢您的回复
gaizai 2012-12-19
  • 打赏
  • 举报
回复
还有这篇:http://www.cnblogs.com/gaizai/archive/2012/10/23/2735556.html
gaizai 2012-12-19
  • 打赏
  • 举报
回复
http://www.cnblogs.com/gaizai/archive/2012/11/21/2780816.html 你还没有进行Master与Slave的Replication设置的情况下,读取Master与Slave的数据是不同,如果想达到读写分离的效果,我们还需要设置Master与Slave之间的数据复制(Replication),详情请参考:http://www.cnblogs.com/gaizai/archive/2012/11/21/2780816.html
bonlog 2012-12-18
  • 打赏
  • 举报
回复
你讲了这么多的理论,主要工作是什么? 你要实现什么功?

56,679

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧