Created
January 20, 2014 03:25
-
-
Save kevinbin/8514392 to your computer and use it in GitHub Desktop.
MySQL Cluster ndbmtd process init start script
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
# chkconfig: 345 60 40 | |
# description: datanode start/stop script | |
### BEGIN INIT INFO | |
# Provides: datanode | |
# Required-Start: $remote_fs $syslog | |
# Required-Stop: $remote_fs $syslog | |
# Default-Start: 3 4 5 | |
# Default-Stop: 0 1 6 | |
# Short-Description: datanode start/stop script | |
### END INIT INFO | |
NODEID=10 | |
basename=`basename $0` | |
TRYCONN=24 #尝试连接管理节点次数 | |
LOG=/var/log/ndbd_start.log | |
SBINDIR=<%=mysql_basedir%>/bin | |
MGM=<%=mysql_basedir%>/bin/ndb_mgm | |
PIDFILE=<%=data_dir%>/ndb_data/ndb_$NODEID.pid | |
OPTIONS="--ndb-nodeid=$NODEID" | |
PROGNAME="ndbmtd" | |
STARTNDBD="$SBINDIR/$PROGNAME $OPTIONS" | |
TEE="/usr/bin/tee -a $LOG" | |
DATE=`date "+%Y-%m-%d %H:%M:%S"` | |
LOCKFILE="" | |
if [ -d /var/lock/subsys ]; then | |
LOCKFILE=/var/lock/subsys/$basename | |
else | |
LOCKFILE=/var/lock/$basename | |
fi | |
if [ -e /etc/init.d/functions ]; then | |
. /etc/init.d/functions | |
else | |
. /lib/lsb/init-functions | |
fi | |
if [ ! -f $SBINDIR/$PROGNAME ]; then | |
echo -e "$PROGNAME executable not found in $SBINDIR"|$TEE | |
exit 1 | |
fi | |
RETVAL=0 | |
start() { | |
echo "$DATE Starting $PROGNAME $OPTIONS !"|$TEE | |
PID=`pgrep -f "$PROGNAME.+ndb-nodeid=$NODEID"` | |
if [ -n "$PID" ]; then | |
echo -e "$PROGNAME is already running with pid $PID\n"|$TEE | |
exit 0 | |
else | |
if [ "$1" ]; then | |
OPTIONS=--initial | |
fi | |
$MGM -e show -t $TRYCONN > /dev/null 2>&1 | |
RETVAL=$? | |
if [ $RETVAL -ne 0 ]; then | |
echo -e "Manager Node not connected\n"| $TEE | |
exit 1 | |
fi | |
$STARTNDBD $OPTIONS |$TEE | |
RETVAL=$? | |
[ $RETVAL -eq 0 ] && /bin/touch $LOCKFILE | |
sleep 2 | |
PID=`pgrep -f "$PROGNAME.+ndb-nodeid=$NODEID"` | |
if [ "$PID" ]; then | |
echo -e "OK: Success to start $PROGNAME\n" | $TEE | |
return 0 | |
else | |
echo -e "Error: Failed to start $PROGNAME\n" | $TEE | |
return 1 | |
fi | |
fi | |
} | |
stop() { | |
echo "$DATE Stopping $PROGNAME:"|$TEE | |
PID=`pgrep -f "$PROGNAME.+ndb-nodeid=$NODEID"` | |
nodenum=`$MGM -e 'all status' |grep started |wc -l ` | |
if [[ $nodenum == 1 ]]; then | |
$MGM -e shutdown |$TEE | |
return 0 | |
fi | |
if [ -n "$PID" ]; then | |
# pkill -15 -f "$PROGNAME.+ndb-nodeid=$NODEID" | |
$MGM -e "$NODEID stop" |$TEE | |
else | |
`rm -f ${PIDFILE}` | |
`rm -f ${LOCKFILE}` | |
echo -e "Error: Failed $PROGNAME not running !\n" | $TEE | |
return 0 | |
fi | |
i=1 | |
while [ "`pgrep -f "$PROGNAME.+ndb-nodeid=$NODEID"`" ]; | |
do | |
if [ $i -eq 60 ]; then | |
echo -e "giving up after 60 secods\n"| $TEE | |
return 0 | |
fi | |
i=`expr $i + 1` | |
sleep 1 | |
done | |
PID=`pgrep $PROGNAME` | |
if [ -n "$PID" ]; then | |
echo -e "Error: Failed $PROGNAME not running\n" | $TEE | |
return 1 | |
else | |
`rm -f ${PIDFILE}` | |
`rm -f ${LOCKFILE}` | |
echo -e "OK: Success to stop $PROGNAME\n" | $TEE | |
return 0 | |
fi | |
} | |
case $1 in | |
start) | |
start | |
RETVAL=$? | |
;; | |
stop) | |
stop | |
RETVAL=$? | |
;; | |
status) | |
status -p $PIDFILE $PROGNAME | |
RETVAL=$? | |
;; | |
restart) | |
stop | |
start | |
RETVAL=$? | |
;; | |
initial) | |
start --initial | |
RETVAL=$? | |
;; | |
*) | |
echo "Usage: $basename {start|stop|restart|initial|status}" | |
exit 1 | |
;; | |
esac | |
exit $RETVAL |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment