summaryrefslogtreecommitdiffstats
path: root/support-files/mysql-multi.server.sh
diff options
context:
space:
mode:
Diffstat (limited to 'support-files/mysql-multi.server.sh')
-rw-r--r--support-files/mysql-multi.server.sh192
1 files changed, 192 insertions, 0 deletions
diff --git a/support-files/mysql-multi.server.sh b/support-files/mysql-multi.server.sh
new file mode 100644
index 00000000..a7a51e6a
--- /dev/null
+++ b/support-files/mysql-multi.server.sh
@@ -0,0 +1,192 @@
+#!/bin/sh
+# Copyright Abandoned 1996 TCX DataKonsult AB & Monty Program KB & Detron HB
+# This file is public domain and comes with NO WARRANTY of any kind
+
+# Mysql daemon start/stop script. Multi-instance enhancements by Tim Bunce.
+
+# Usually this is put in /etc/init.d (at least on machines SYSV R4
+# based systems) and linked to
+# /etc/rc3.d/S99mysql.svr1
+# and /etc/rc0.d/S01mysql.svr1
+# When this is done the mysql server will be started when the machine is
+# started and shut down when the systems goes down. The '.svr1' suffix can
+# be used to identify one of a number of servers. Multiple symlinks can be
+# created, one per instance. The 'svrN' suffix can then be used to
+# prefix configuration variables in a separate section of /etc/my.cnf.
+# See example below.
+#
+# A typical multi-instance /etc/my.cnf file would look like:
+# [mysqld]
+# basedir=...
+# key_buffer_size=16M
+# max_allowed_packet=1M
+# [mysql_multi_server]
+# svr1-datadir=/foo1/bar
+# svr2-datadir=/foo2/bar
+#
+# and then the /foo1/bar/my.cnf and /foo2/bar/my.cnf files
+# would contain all the *instance specific* configurations.
+#
+# This script can also be run manually in which case the server instance
+# is identified by an extra argument, for example:
+# /etc/init.d/mysql stop svr3
+#
+
+PATH=/sbin:/usr/sbin:/bin:/usr/bin
+export PATH
+
+mode=$1 # start or stop
+svr=$2 # eg 'svr1' (optional)
+if [ "$2" = "" ]
+then name=`basename $0`
+else name=$2
+fi
+
+# Extract identity of the server we are working with
+svr=`echo "$name" | sed -e 's/.*\<\(svr[1-9][0-9]*\)\>.*/\1/'`
+if [ "$svr" = "" ]
+then
+ echo "Can't determine database svr number from name '$name'"
+ exit 1
+fi
+
+echo "mariadbd $svr $mode"
+
+parse_arguments() {
+ for arg do
+ case "$arg" in
+ --basedir=*|--${svr}-basedir=*)
+ basedir=`echo "$arg" | sed -e 's/^[^=]*=//'` ;;
+ --datadir=*|--${svr}-basedir=*)
+ datadir=`echo "$arg" | sed -e 's/^[^=]*=//'` ;;
+ --pid-file=*|--${svr}-basedir=*)
+ pid_file=`echo "$arg" | sed -e 's/^[^=]*=//'` ;;
+ esac
+ done
+}
+
+# Get arguments from the my.cnf file, groups [mysqld], [mysql_server],
+# and mysql_multi_server
+if test -x ./bin/my_print_defaults
+then
+ print_defaults="./bin/my_print_defaults"
+elif test -x @bindir@/my_print_defaults
+then
+ print_defaults="@bindir@/my_print_defaults"
+elif test -x @bindir@/mysql_print_defaults
+then
+ print_defaults="@bindir@/mysql_print_defaults"
+else
+ # Try to find basedir in /etc/my.cnf
+ conf=/etc/my.cnf
+ print_defaults=
+ if test -r $conf
+ then
+ subpat='^[^=]*basedir[^=]*=\(.*\)$'
+ dirs=`sed -e "/$subpat/!d" -e 's//\1/' $conf
+ for d in $dirs
+ do
+ d=`echo $d | sed -e 's/[ ]//g'`
+ if test -x "$d/bin/my_print_defaults"
+ then
+ print_defaults="$d/bin/my_print_defaults"
+ break
+ fi
+ if test -x "$d/bin/mysql_print_defaults"
+ then
+ print_defaults="$d/bin/mysql_print_defaults"
+ break
+ fi
+ done
+ fi
+
+ # Hope it's in the PATH ... but I doubt it
+ test -z "$print_defaults" && print_defaults="my_print_defaults"
+fi
+
+datadir=@localstatedir@
+basedir=
+pid_file=
+parse_arguments `$print_defaults $defaults mariadbd mysqld mysql_server mysql_multi_server`
+
+if test -z "$basedir"
+then
+ basedir=@prefix@
+ bindir=@bindir@
+else
+ bindir="$basedir/bin"
+fi
+if test -z "$pid_file"
+then
+ pid_file=$datadir/`@HOSTNAME@`.pid
+else
+ case "$pid_file" in
+ /* ) ;;
+ * ) pid_file="$datadir/$pid_file" ;;
+ esac
+fi
+
+# Safeguard (relative paths, core dumps..)
+cd $basedir
+
+case "$mode" in
+ 'start')
+ # Start daemon
+
+ if test -x $bindir/mysqld_safe
+ then
+ # We only need to specify datadir and pid-file here and we
+ # get all other instance-specific config from $datadir/my.cnf.
+ # We have to explicitly pass --defaults-extra-file because it
+ # reads the config files before the command line options.
+ # Also it must be first because of the way mysqld_safe works.
+ $bindir/mysqld_safe --defaults-extra-file=$datadir/my.cnf \
+ --datadir=$datadir --pid-file=$pid_file &
+ # Make lock for RedHat / SuSE
+ if test -d /var/lock/subsys
+ then
+ touch /var/lock/subsys/mysql
+ fi
+ else
+ echo "Can't execute $bindir/mysqld_safe"
+ fi
+ ;;
+
+ 'stop')
+ # Stop daemon. We use a signal here to avoid having to know the
+ # root password.
+ if test -f "$pid_file"
+ then
+ mariadbd_pid=`cat $pid_file`
+ echo "Killing mariadbd $svr with pid $mariadbd_pid"
+ kill $mariadbd_pid
+ # mariadbd should remove the pid_file when it exits, so wait for it.
+
+ sleep 1
+ while [ -s $pid_file -a "$flags" != aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa ]
+ do
+ [ -z "$flags" ] && echo "Wait for mariadbd $svr to exit\c" || echo ".\c"
+ flags=a$flags
+ sleep 1
+ done
+ if [ -s $pid_file ]
+ then echo " gave up waiting!"
+ elif [ -n "$flags" ]
+ then echo " done"
+ fi
+ # delete lock for RedHat / SuSE
+ if test -e /var/lock/subsys/mysql
+ then
+ rm /var/lock/subsys/mysql
+ fi
+ else
+ echo "No mariadbd pid file found. Looked for $pid_file."
+ fi
+ ;;
+
+ *)
+ # usage
+ echo "usage: $0 start|stop [ svrN ]"
+ exit 1
+ ;;
+esac