Skip to content

Instantly share code, notes, and snippets.

@kevinbin
Created January 20, 2014 03:25
Show Gist options
  • Save kevinbin/8514399 to your computer and use it in GitHub Desktop.
Save kevinbin/8514399 to your computer and use it in GitHub Desktop.
MySQL Cluster ndb_mgmd process init start script
#!/bin/bash
# chkconfig: 345 99 30
# description: ndb_mgmd start/stop script
### BEGIN INIT INFO
# Provides: ndb_mgmd start/stop
# Required-Start: $local_fs $network $remote_fs
# Required-Stop: $local_fs $network $remote_fs
# Default-Start: 3 4 5
# Default-Stop: 0 1 6
# Short-Description: ndb_mgmd start/stop script
### END INIT INFO
NODEID=1
basename=`basename $0`
LOG=/var/log/ndb_mgmd_start.log
CONFIGINI=<%=data_dir%>/config.ini
SBINDIR=<%=mysql_basedir%>/bin
PIDFILE=<%=data_dir%>/mgm_data/ndb_$NODEID.pid
TEE="/usr/bin/tee -a $LOG"
DATE=`date "+%Y-%m-%d %H:%M:%S"`
OPTIONS=" --ndb-nodeid=${NODEID} --config-file=$CONFIGINI --reload --config-cache=0"
PROGNAME="ndb_mgmd"
STARTNDBD="$SBINDIR/$PROGNAME $OPTIONS"
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 -e "$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
return 0
else
$STARTNDBD $OPTIONS|$TEE
RETVAL=$?
[ $RETVAL -eq 0 ] && /bin/touch $LOCKFILE
sleep 3
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 -e "$DATE: Stopping $PROGNAME : "|$TEE
PID=`pgrep -f "$PROGNAME.+ndb-nodeid=$NODEID"`
if [ -n "$PID" ]; then
pkill -15 -f "$PROGNAME.+ndb-nodeid=$NODEID"
else
`rm -f ${PIDFILE}`
`rm -f ${LOCKFILE}`
echo -e "Error: Failed $PROGNAME not running !\n" | $TEE
return 1
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}`
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=$?
;;
*)
echo "Usage: $basename {start|stop|restart|status}"
exit 1
;;
esac
exit $RETVAL
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment