mariadb/mysql-test/ndb/ndbcluster.sh
tomas@poseidon.ndb.mysql.com 37df5deb41 adopting mysql-test-run to new ndb config
+ added option to ndb_waiter to wait for NO CONTACT
2004-06-28 19:53:55 +00:00

221 lines
4.5 KiB
Bash

#!/bin/sh
# Copyright (C) 2004 MySQL AB
# For a more info consult the file COPYRIGHT distributed with this file
# This scripts starts the table handler ndbcluster
# configurable parameters, make sure to change in mysqlcluterd as well
port_base="2200"
fsdir=`pwd`
# end configurable parameters
#BASEDIR is always one above mysql-test directory
CWD=`pwd`
cd ..
BASEDIR=`pwd`
cd $CWD
# Are we using a source or a binary distribution?
if [ -d ../sql ] ; then
SOURCE_DIST=1
ndbtop=$BASEDIR/ndb
exec_ndb=$ndbtop/src/kernel/ndbd
exec_mgmtsrvr=$ndbtop/src/mgmsrv/ndb_mgmd
exec_waiter=$ndbtop/tools/ndb_waiter
exec_mgmtclient=$ndbtop/src/mgmclient/ndb_mgm
else
BINARY_DIST=1
if test -x "$BASEDIR/libexec/ndbd"
then
exec_ndb=$BASEDIR/libexec/ndbd
exec_mgmtsrvr=$BASEDIR/libexec/ndb_mgmd
else
exec_ndb=$BASEDIR/bin/ndbd
exec_mgmtsrvr=$BASEDIR/bin/ndb_mgmd
fi
exec_waiter=$BASEDIR/bin/ndb_waiter
exec_mgmtclient=$BASEDIR/bin/ndb_mgm
fi
pidfile=ndbcluster.pid
cfgfile=Ndb.cfg
stop_ndb=
initial_ndb=
status_ndb=
ndb_discless=0
ndb_con_op=100000
ndb_dmem=80M
ndb_imem=24M
while test $# -gt 0; do
case "$1" in
--stop)
stop_ndb=1
;;
--initial)
flags_ndb=$flags_ndb" -i"
initial_ndb=1
;;
--status)
status_ndb=1
;;
--small)
ndb_con_op=10000
ndb_dmem=40M
ndb_imem=12M
;;
--discless)
ndb_discless=1
;;
--data-dir=*)
fsdir=`echo "$1" | sed -e "s;--data-dir=;;"`
;;
--port-base=*)
port_base=`echo "$1" | sed -e "s;--port-base=;;"`
;;
-- ) shift; break ;;
--* ) $ECHO "Unrecognized option: $1"; exit 1 ;;
* ) break ;;
esac
shift
done
fs_ndb=$fsdir/ndbcluster-$port_base
fs_name_1=$fs_ndb/node-1-fs
fs_name_2=$fs_ndb/node-2-fs
NDB_HOME=
export NDB_CONNECTSTRING
if [ ! -x $fsdir ]; then
echo "$fsdir missing"
exit 1
fi
if [ ! -x $exec_ndb ]; then
echo "$exec_ndb missing"
exit 1
fi
if [ ! -x $exec_mgmtsrv ]; then
echo "$exec_mgmtsrvr missing"
exit 1
fi
ndb_host="localhost"
ndb_mgmd_port=$port_base
export NDB_CONNECTSTRING="host=$ndb_host:$ndb_mgmd_port"
start_default_ndbcluster() {
# do some checks
if [ $initial_ndb ] ; then
[ -d $fs_ndb ] || mkdir $fs_ndb
[ -d $fs_name_1 ] || mkdir $fs_name_1
[ -d $fs_name_2 ] || mkdir $fs_name_2
fi
if [ -d "$fs_ndb" -a -d "$fs_name_1" -a -d "$fs_name_2" ]; then :; else
echo "$fs_ndb filesystem directory does not exist"
exit 1
fi
# set som help variables
port_transporter=`expr $ndb_mgmd_port + 2`
# Start management server as deamon
# Edit file system path and ports in config file
if [ $initial_ndb ] ; then
sed \
-e s,"CHOOSE_MaxNoOfConcurrentOperations",$ndb_con_op,g \
-e s,"CHOOSE_DataMemory",$ndb_dmem,g \
-e s,"CHOOSE_IndexMemory",$ndb_imem,g \
-e s,"CHOOSE_Discless",$ndb_discless,g \
-e s,"CHOOSE_HOSTNAME_".*,"$ndb_host",g \
-e s,"CHOOSE_FILESYSTEM_NODE_1","$fs_name_1",g \
-e s,"CHOOSE_FILESYSTEM_NODE_2","$fs_name_2",g \
-e s,"CHOOSE_PORT_MGM",$ndb_mgmd_port,g \
-e s,"CHOOSE_PORT_TRANSPORTER",$port_transporter,g \
< ndb/ndb_config_2_node.ini \
> "$fs_ndb/config.ini"
fi
rm -f $cfgfile 2>&1 | cat > /dev/null
rm -f $fs_ndb/$cfgfile 2>&1 | cat > /dev/null
if ( cd $fs_ndb ; $exec_mgmtsrvr -d -c config.ini ) ; then :; else
echo "Unable to start $exec_mgmtsrvr from `pwd`"
exit 1
fi
cat `find $fs_ndb -name 'ndb_*.pid'` > $fs_ndb/$pidfile
# Start database node
echo "Starting ndbd"
( cd $fs_ndb ; $exec_ndb -d $flags_ndb & )
cat `find $fs_ndb -name 'ndb_*.pid'` > $fs_ndb/$pidfile
# Start database node
echo "Starting ndbd"
( cd $fs_ndb ; $exec_ndb -d $flags_ndb & )
cat `find $fs_ndb -name 'ndb_*.pid'` > $fs_ndb/$pidfile
# test if Ndb Cluster starts properly
echo "Waiting for started..."
if ( $exec_waiter ) | grep "NDBT_ProgramExit: 0 - OK"; then :; else
echo "Ndbcluster startup failed"
exit 1
fi
cat `find $fs_ndb -name 'ndb_*.pid'` > $fs_ndb/$pidfile
status_ndbcluster
}
status_ndbcluster() {
# Start management client
echo "show" | $exec_mgmtclient
}
stop_default_ndbcluster() {
#if [ ! -f $pidfile ] ; then
# exit 0
#fi
#if [ ! -f $cfgfile ] ; then
# echo "$cfgfile missing"
# exit 1
#fi
# Start management client
exec_mgmtclient="$exec_mgmtclient --try-reconnect=1"
echo "all stop" | $exec_mgmtclient 2>&1 | cat > /dev/null
if [ -f $fs_ndb/$pidfile ] ; then
kill -9 `cat $fs_ndb/$pidfile` 2> /dev/null
rm $fs_ndb/$pidfile
fi
}
if [ $status_ndb ] ; then
status_ndbcluster
exit 0
fi
if [ $stop_ndb ] ; then
stop_default_ndbcluster
else
start_default_ndbcluster
fi
exit 0