为了账号安全,请及时绑定邮箱和手机立即绑定

采用MySQL-Proxy进行读写分离时的一点疑问

标签:
MySQL


今天在采用 MySQL-Proxy 0.8.3 测试读写分离时,功能都正常,但出现了一些让人有些疑惑的提示信息,

不太确定算不算异常。。。。。。

配置文件“/usr/local/mysql-proxy/etc/mysql-proxy.cnf”如下:

[mysql-proxy]

basedir = /usr/local/mysql-proxy

daemon = true

keepalive = true

proxy-address = 0.0.0.0:3306

max-open-files = 65535

proxy-fix-bug-25371 = true

event-threads = 8

                        

proxy-backend-addresses = 10.222.5.224:3306

proxy-read-only-backend-addresses = 10.137.23.179:3306

                        

plugin-dir = /usr/local/mysql-proxy/lib/mysql-proxy/plugins

plugins = admin,proxy

admin-lua-script = /usr/local/mysql-proxy/lib/mysql-proxy/lua/admin.lua

proxy-lua-script = /usr/local/mysql-proxy/lib/mysql-proxy/lua/rw-splitting.lua

                        

admin-address = 10.209.6.102:3307

admin-username = root

admin-password = 123456

                        

pid-file= /usr/local/mysql-proxy/run/mysql-proxy.pid

log-file = /usr/local/mysql-proxy/log/mysql-proxy.log

log-level = warning

启动脚本“/etc/init.d/mysql-proxy”如下:

#!/bin/sh

#

# mysql-proxy This script starts and stops the mysql-proxy daemon

#

# chkconfig: - 78 30

# processname: mysql-proxy

# description: mysql-proxy is a proxy daemon to mysql

# config: /usr/local/mysql-proxy/etc/mysql-proxy.cnf

# pidfile: /usr/local/mysql-proxy/run/mysql-proxy.pid

#

PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

                                                                                              

DAEMON="/usr/local/mysql-proxy/bin/mysql-proxy"

CONFIGFILE="/usr/local/mysql-proxy/etc/mysql-proxy.cnf"

PIDFILE="/usr/local/mysql-proxy/run/mysql-proxy.pid"

LOCKFILE="/var/lock/subsys/mysql-proxy"

PROG=`basename $DAEMON`

                                                                                              

RETVAL=0

                                                                                              

start() {

    echo -n $"Starting ${PROG}......"

    [ -x $DAEMON ] || exit 5

    [ -f $CONFIGFILE ] || exit 6

    ${DAEMON} --defaults-file=${CONFIGFILE} || echo -n "${PROG} already running"

                                                                                                 

    RETVAL=$?

    echo

    [[ $RETVAL -eq 0 ]] && touch $LOCKFILE

                                                                                                 

    return $RETVAL

}

                                                                                              

stop() {

    echo -n $"Stopping ${PROG}......"

                                                                                                 

    if [[ `ps aux | grep bin/mysql-proxy | grep -v grep | wc -l` -gt 0 ]]; then

        kill -TERM `ps -A -oppid,pid,cmd | grep bin/mysql-proxy | grep -v grep | awk '{print $2}'`

    fi

                                                                                                 

    RETVAL=$?

    echo

    [[ $RETVAL -eq 0 ]] && rm -f $LOCKFILE $PIDFILE

                                                                                                 

    return $RETVAL

}

                                                                                              

restart() {

    stop

    sleep 1

    start

}

                                                                                              

case "$1" in

start)

    start

    ;;

                                                                                                 

stop)

    stop

    ;;

                                                                                                 

restart)

    restart

    ;;

                                                                                                 

condrestart)

    [[ -e $LOCKFILE ]] && restart

    ;;

                                                                                                 

*)

    echo "Usage: $0 {start|stop|restart|condrestart}"

    RETVAL=1

    ;;

esac

                                                                                              

exit $RETVAL

启动命令:

service mysql-proxy start

通过查看日志,发现有如下警告信息:

wKiom1NSmfSiId-VAAD_YM0ggsw453.jpg

通过网上查阅相关资料,大致的意思是说,当存在长连接且连接超时的时候,再次重连时子进程会异常自动重启,

于是设置如下:

wKiom1NSmwrxFIaiAAGqb1C091M546.jpg

但在后端 MySQL 服务器上,进行如上参数设置后,并没有解决此类问题,

于是根据报错信息,定位到如下关键代码(chassis-unix-daemon.c):

wKioL1NSm_yAFhGYAAQOb3qNeTM828.jpg

通过查阅相关书籍,了解到如下信息:

wKioL1NSnXbhfnaYAAGwY1Lld88337.jpg

但在这篇文章中的描述如下(http://memorymyann.iteye.com/blog/242992):

WIFSIGNALED(status)

returns true if the child process exited because of a signal which was not caught.

也就是说,如果是因为子进程未能正常捕获信号而退出时,就返回true。

更详细的描述,可以参考这里(服务器开发之 Daemon 和 Keepalive):

http://my.oschina.net/moooofly/blog/116454

目前针对此类的提示信息,还不太确定是否属于异常,希望各位多提些建议。。。。。。

j_0067.gif

©著作权归作者所有:来自51CTO博客作者workming的原创作品,如需转载,请注明出处,否则将追究法律责任

mysql-proxy存储


点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消