今天在采用 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
通过查看日志,发现有如下警告信息:
通过网上查阅相关资料,大致的意思是说,当存在长连接且连接超时的时候,再次重连时子进程会异常自动重启,
于是设置如下:
但在后端 MySQL 服务器上,进行如上参数设置后,并没有解决此类问题,
于是根据报错信息,定位到如下关键代码(chassis-unix-daemon.c ):
通过查阅相关书籍,了解到如下信息:
但在这篇文章中的描述如下(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
目前针对此类的提示信息,还不太确定是否属于异常,希望各位多提些建议。。。。。。