#!/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="22" # using ports port_base{"00","01", etc} fsdir=`pwd` # end configurable parameters libdir=`pwd`/../ndb/lib bindir=`pwd`/../ndb/bin pidfile=ndbcluster.pid while test $# -gt 0; do case "$1" in --initial) flags_ndb=$flags_ndb" -i" initial_ndb=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 exec_ndb=$bindir/ndb exec_mgmtsrvr=$bindir/mgmtsrvr fs_ndb=$fsdir/ndbcluster fs_mgm_1=$fs_ndb/1.ndb_mgm fs_ndb_2=$fs_ndb/2.ndb_db fs_ndb_3=$fs_ndb/3.ndb_db fs_name_2=$fs_ndb/node-2-fs fs_name_3=$fs_ndb/node-3-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 start_default_ndbcluster() { # do some checks NDB_CONNECTSTRING= if [ $initial_ndb ] ; then [ -d $fs_ndb ] || mkdir $fs_ndb [ -d $fs_mgm_1 ] || mkdir $fs_mgm_1 [ -d $fs_ndb_2 ] || mkdir $fs_ndb_2 [ -d $fs_ndb_3 ] || mkdir $fs_ndb_3 [ -d $fs_name_2 ] || mkdir $fs_name_2 [ -d $fs_name_3 ] || mkdir $fs_name_3 fi if [ -d "$fs_ndb" -a -d "$fs_mgm_1" -a -d "$fs_ndb_2" -a -d "$fs_ndb_3" -a -d "$fs_name_2" -a -d "$fs_name_3" ]; then :; else echo "$fs_ndb filesystem directory does not exist" exit 1 fi # set som help variables ndb_host="localhost" ndb_port=$port_base"00" NDB_CONNECTSTRING_BASE="host=$ndb_host:$ndb_port;nodeid=" # Start management server as deamon NDB_ID="1" NDB_CONNECTSTRING=$NDB_CONNECTSTRING_BASE$NDB_ID # Edit file system path and ports in config file if [ $initial_ndb ] ; then sed \ -e s,"CHOOSE_HOSTNAME_".*,"$ndb_host",g \ -e s,"CHOOSE_FILESYSTEM_NODE_2","$fs_name_2",g \ -e s,"CHOOSE_FILESYSTEM_NODE_3","$fs_name_3",g \ -e s,"CHOOSE_PORT_BASE",$port_base,g \ < ndb/ndb_config_2_node.ini \ > "$fs_mgm_1/config.ini" fi if ( cd $fs_mgm_1 ; echo $NDB_CONNECTSTRING > Ndb.cfg ; $exec_mgmtsrvr -d -c config.ini ) ; then :; else echo "Unable to start $exec_mgmtsrvr from `pwd`" exit 1 fi cat `find $fs_ndb -name 'node*.pid'` > $pidfile # Start database node NDB_ID="2" NDB_CONNECTSTRING=$NDB_CONNECTSTRING_BASE$NDB_ID ( cd $fs_ndb_2 ; echo $NDB_CONNECTSTRING > Ndb.cfg ; $exec_ndb -d $flags_ndb & ) cat `find $fs_ndb -name 'node*.pid'` > $pidfile # Start database node NDB_ID="3" NDB_CONNECTSTRING=$NDB_CONNECTSTRING_BASE$NDB_ID ( cd $fs_ndb_3 ; echo $NDB_CONNECTSTRING > Ndb.cfg ; $exec_ndb -d $flags_ndb & ) cat `find $fs_ndb -name 'node*.pid'` > $pidfile # Start management client sleep 5 echo "show" | $bindir/mgmtclient $ndb_host $ndb_port # test if Ndb Cluster starts properly NDB_ID="11" NDB_CONNECTSTRING=$NDB_CONNECTSTRING_BASE$NDB_ID #if ( export LD_LIBRARY_PATH=$libdir ; $bindir/list_tables ) | grep "NDBT_ProgramExit: 0 - OK"; then :; else if ( export LD_LIBRARY_PATH=$libdir ; $bindir/waiter ) | grep "NDBT_ProgramExit: 0 - OK"; then :; else echo "Ndbcluster startup failed" exit 1 fi echo $NDB_CONNECTSTRING > Ndb.cfg cat `find $fs_ndb -name 'node*.pid'` > $pidfile } start_default_ndbcluster exit 0