]> git.pld-linux.org Git - packages/percona-server.git/blame - mysql.init
- show in status also info about processes not registered in /etc/mysql/clusters...
[packages/percona-server.git] / mysql.init
CommitLineData
53a28f77 1#!/bin/sh
2#
350d9d8c 3# mysql A very fast and reliable SQL database engine
53a28f77 4#
350d9d8c 5# chkconfig: 2345 84 25
53a28f77 6#
350d9d8c 7# description: A very fast and reliable SQL database engine.
53a28f77 8#
0b079830
ER
9# $Id$
10
53a28f77 11# Source function library
12. /etc/rc.d/init.d/functions
13
14# Get network config
15. /etc/sysconfig/network
16
aac2c31f
AM
17# Get service config
18if [ -f /etc/sysconfig/mysql ]; then
350d9d8c 19 . /etc/sysconfig/mysql
aac2c31f 20else
350d9d8c 21 nls "Error: %s not found" /etc/sysconfig/mysql
95b0575d 22 nls "%s can't be run." MySQL
350d9d8c
PG
23 exit 1
24fi
25
0146fae1 26if [ -n "$MYSQL_DB_CLUSTERS" ]; then
350d9d8c 27 nls "Warning: MYSQL_DB_CLUSTERS is set. It's obsolete. Use %s instead." /etc/mysql/clusters.conf
aac2c31f
AM
28fi
29
95b0575d 30if [ -f /etc/mysql/clusters.conf ]; then
0ca65658 31 MYSQL_DB_CLUSTERS=$(awk -F= '!/^#/{print $2}' /etc/mysql/clusters.conf)
95b0575d
ER
32 if [ -z "$MYSQL_DB_CLUSTERS" ]; then
33 nls "Warning: there are no configured clusters."
34 fi
0146fae1 35
95b0575d 36else
0146fae1 37 nls "Warning: Missing clusters config file %s" /etc/mysql/clusters.conf
95b0575d
ER
38 if [ -z "$MYSQL_DB_CLUSTERS" ]; then
39 nls "Warning: there are no configured clusters."
40 nls "Using default cluster /var/lib/mysql (compatibility mode)"
41 MYSQL_DB_CLUSTERS=/var/lib/mysql
42 fi
aac2c31f
AM
43fi
44
95b0575d 45
ac28c610 46# Check that networking is up
8eb71226 47if is_yes "${NETWORKING}"; then
213fc2f2 48 if [ ! -f /var/lock/subsys/network -a "$1" != stop -a "$1" != status -a "$1" != init ]; then
8eb71226 49 msg_network_down MySQL
50 exit 1
51 fi
52else
53 exit 0
e9ca44ab 54fi
55
aac2c31f
AM
56action="$1"
57
58# any db cluster as command line argument?
521444a9 59if [ $# -gt 1 ]; then
350d9d8c
PG
60 shift
61 # perform action for specified clusters only
30b2aa9a
ER
62 for a in "$@"; do
63 # try auto resolving from /etc/mysql/clusters.conf
64 if [[ "$a" != /* ]]; then
65 m=$(awk -va="$a" -F= 'substr($0, 1, length(a)) == a {print $1}' /etc/mysql/clusters.conf)
66 if [ -z "$m" ]; then
67 echo >&2 "Cluster name '$a' did not match anything!"
68 exit 1
69 fi
70 if [ $(echo "$m" | wc -l) -gt 1 ]; then
71 echo >&2 "Cluster name '$a' ambiguous:" $m
72 exit 1
73 fi
74 a=$(awk -va="$a" -F= 'substr($0, 1, length(a)) == a {print $2}' /etc/mysql/clusters.conf)
75 fi
76 DB_CLUSTERS="$DB_CLUSTERS $a"
77 done
aac2c31f 78else
350d9d8c 79 DB_CLUSTERS="$MYSQL_DB_CLUSTERS"
53a28f77 80fi
81
aac2c31f 82MYSQL_ERRLOG=/var/log/mysql/err
c85758f0
AM
83MYSQL_START_WAIT_TIME=${MYSQL_START_WAIT_TIME:-15}
84MYSQL_STOP_WAIT_TIME=${MYSQL_STOP_WAIT_TIME:-900}
aac2c31f
AM
85
86#
87# Useful functions.
88#
89
90#
91# check for mysql status
92#
93# arguments:
94# $1 - db cluster
c85758f0 95# $2 - start|stop
aac2c31f
AM
96#
97# sets variables:
c85758f0 98# MYSQL_STATUS = starting | running | not running | died
aac2c31f
AM
99# MYSQL_PID = pid of mysqld process
100#
101mysqlstatus() {
102 clusterdir="$1"
c85758f0
AM
103 mode="$2"
104
aac2c31f 105 mysqlgetconfig "$clusterdir"
d405c4eb 106
350d9d8c
PG
107 MYSQL_STATUS="not running"
108 MYSQL_PID="unknown"
c85758f0
AM
109 MYSQL_PIDFILE_PID=""
110 MYSQL_GREP_PID=""
aac2c31f 111
c85758f0
AM
112 if [ -f "$MYSQL_PIDFILE" ]; then
113 MYSQL_PIDFILE_PID=$(cat "$MYSQL_PIDFILE")
114 fi
115
116 if [ -n "$MYSQL_PIDFILE_PID" ]; then
117 MYSQL_PID=$MYSQL_PIDFILE_PID
118 if [ ! -d "/proc/$MYSQL_PID" ]; then
119 MYSQL_STATUS="died"
120 return
376ffa12 121 elif (grep -qa "$MYSQL_PIDFILE" /proc/$MYSQL_PID/cmdline 2> /dev/null); then
c85758f0
AM
122 MYSQL_STATUS="running"
123 return
124 fi
125 fi
6d3c5db5 126
c85758f0 127 if [ "$mode" = "start" ]; then
376ffa12 128 MYSQL_GREP_PID=$(grep -lE "^/usr/sbin/mysqld.*${MYSQL_PIDFILE}" /proc/[0-9]*/cmdline 2> /dev/null | awk -F "/" '{ print $3; exit; }')
c85758f0
AM
129 if [ -n "$MYSQL_GREP_PID" ]; then
130 MYSQL_PID=$MYSQL_GREP_PID
0ca65658 131 if grep -qa "$MYSQL_PIDFILE" /proc/$MYSQL_PID/cmdline 2> /dev/null; then
c85758f0
AM
132 if [ -f "$MYSQL_PIDFILE" ]; then
133 MYSQL_PIDFILE_PID=$(cat "$MYSQL_PIDFILE")
134 fi
135 if [ -n "$MYSQL_PIDFILE_PID" ]; then
136 MYSQL_PID=$MYSQL_PIDFILE_PID
137 MYSQL_STATUS="running"
138 return
139 else
140 MYSQL_STATUS="starting"
141 return
142 fi
143 fi
144 fi
6d3c5db5 145 fi
c85758f0
AM
146
147 # else default, "not running"
aac2c31f
AM
148}
149
150# get mysql configuration in variables
151# MYSQL_CONFIG MYSQL_DATA_DIR MYSQL_USER MYSQL_PIDFILE
152#
153# arguments
154# $1 - db cluster
155
156mysqlgetconfig() {
157 clusterdir="$1"
aac2c31f
AM
158
159 # emulate old behaviour if only one cluster specified
160 if [ "$clusterdir" = "$MYSQL_DB_CLUSTERS" -a "$clusterdir" = "/var/lib/mysql" -a -f /etc/mysqld.conf ]; then
0ca65658 161 MYSQL_RA_COMPAT=yes
aac2c31f 162 config_file=/etc/mysqld.conf
521444a9 163 else
0ca65658
ER
164 config=$(awk -F= -vclusterdir="$clusterdir" '!/^#/{ if (clusterdir == $2) print $1}' /etc/mysql/clusters.conf)
165 if [[ $config = /* ]]; then
d54e166d 166 config_file="$config"
fe2f6e01 167 elif [ -f "/etc/mysql/$config" ]; then
0ca65658 168 config_file="/etc/mysql/$config"
d54e166d
AM
169 else
170 config_file="$clusterdir/mysqld.conf"
171 fi
350d9d8c 172 fi
aac2c31f 173
0ca65658 174 MYSQL_CLUSTER_DIR="$clusterdir"
d405c4eb 175
521444a9 176 if [ -z "$config_file" ]; then
f9ad67df
PG
177 nls "Error: Can't find config file for %s cluster" "$clusterdir"
178 exit 6
179 else
0ca65658 180 MYSQL_CONFIG="$config_file"
f9ad67df 181 fi
d405c4eb 182
aac2c31f
AM
183 if [ ! -f "$config_file" ]; then
184 nls "Error: config file %s not found" "$config_file"
350d9d8c
PG
185 nls "MySQL can't be run. Did you initialize DB by doing \`$0 init'?"
186 exit 6
aac2c31f
AM
187 fi
188
189 eval `awk '
823c13f7
SZ
190/^[ \t]*\[.*\][ \t]*$/ {
191 match($0,/\[.*\]/)
0ca65658 192 section=substr($0, RSTART + 1, RSTART + RLENGTH - 3)
823c13f7 193}
0ca65658
ER
194section == "mysqld" && $2 ~ "=" {
195 if ($1 == "datadir") {
823c13f7 196 printf("MYSQL_DATA_DIR=%s;", $3)
0ca65658 197 } else if ($1 == "user") {
823c13f7 198 printf("MYSQL_USER=%s;", $3)
0ca65658 199 } else if ($1 == "pid-file") {
823c13f7 200 printf("MYSQL_PIDFILE=%s;", $3)
0ca65658 201 } else if ($1 == "socket") {
aac2c31f 202 printf("MYSQL_SOCKET=%s;", $3)
823c13f7
SZ
203 }
204}
aac2c31f 205' $config_file`
e9ca44ab 206
e9ca44ab 207
d54e166d 208 if is_yes "$MYSQL_RA_COMPAT"; then
350d9d8c 209 MYSQL_DATA_DIR_SUB=""
8ee1d59c 210 else
350d9d8c 211 MYSQL_DATA_DIR_SUB="/mysqldb"
8ee1d59c 212 fi
d405c4eb 213
8ee1d59c 214 if [ -z "$MYSQL_DATA_DIR" -o "$MYSQL_DATA_DIR" != "${clusterdir}${MYSQL_DATA_DIR_SUB}/db" ]; then
350d9d8c
PG
215 nls "Error: datadir specified in %s should be %s" "$config_file" "$clusterdir${MYSQL_DATA_DIR_SUB}/db"
216 nls " MySQL can't be run."
217 exit 6
8ee1d59c 218 fi
d405c4eb 219
8ee1d59c
AM
220 if [ -z "$MYSQL_PIDFILE" -o "$MYSQL_PIDFILE" != "$clusterdir${MYSQL_DATA_DIR_SUB}/mysql.pid" ]; then
221 nls "Error: pid-file specified in %s should be %s" "$config_file" "$clusterdir${MYSQL_DATA_DIR_SUB}/mysql.pid"
222 nls " MySQL can't be run."
223 exit 6
224 fi
e9ca44ab 225
aac2c31f 226 if [ -z $MYSQL_USER ]; then
350d9d8c
PG
227 echo "$(nls 'MySQL user not configured properly')"'!' >&2
228 nls "Edit %s and configure it." "$config_file" >&2
229 exit 6
860cd80c 230 fi
aac2c31f 231}
e9ca44ab 232
aac2c31f
AM
233# start mysql
234mysqlstart() {
235 clusterdir="$1"
236 mysqlgetconfig "$clusterdir"
237 if [ ! -d "$MYSQL_DATA_DIR/mysql" ]; then
238 nls "MySQL cluster %s not initialized." "$clusterdir"
239 nls "Try \`%s init %s' before start." "$0" "$clusterdir"
350d9d8c
PG
240 exit 6
241 fi
02e96f2e 242
aac2c31f
AM
243 msg_starting "MySQL $clusterdir"
244 busy
245 [ -z "$DEFAULT_SERVICE_RUN_NICE_LEVEL" ] && DEFAULT_SERVICE_RUN_NICE_LEVEL=0
c85758f0 246 rm -f "$MYSQL_PIDFILE"
c4fbabf1
ER
247
248 TMPDIR=/tmp nice -n ${SERVICE_RUN_NICE_LEVEL:-$DEFAULT_SERVICE_RUN_NICE_LEVEL} \
249 /usr/bin/setsid /usr/sbin/mysqld \
250 --defaults-file=$MYSQL_CONFIG \
251 --datadir=$MYSQL_DATA_DIR \
252 --pid-file=$MYSQL_PIDFILE $MYSQL_OPTIONS \
253 >> $MYSQL_ERRLOG 2>&1 &
254 pid=$!
255
256 sleep 0.1
c85758f0
AM
257 mysqlstatus "$clusterdir" start
258 # it takes longer for mysqld to start and create pidfile if it has to recover innodb transactions
259 if [ "$MYSQL_STATUS" = "starting" ]; then
c4fbabf1
ER
260 echo ""
261 show "Waiting for MySQL to start"
262 busy
263
264 # while the pid is running, mysql is starting up
265 # if the pidfile was created, it started up successfully
266 # if either case fails we break and report status
267 while true; do
268 [ -d /proc/$pid ] || break
c85758f0 269 [ -f "$MYSQL_PIDFILE" ] && break
c4fbabf1 270 sleep 0.2
c85758f0
AM
271 done
272 fi
273
274 mysqlstatus "$clusterdir" start
6d3c5db5 275 if [ "$MYSQL_STATUS" = "running" -a "$MYSQL_PID" != "unknown" ]; then
aac2c31f 276 ok
47fd5a6a 277 elif [ "$MYSQL_STATUS" = "died" ]; then
350d9d8c 278 RETVAL=1
47fd5a6a 279 died
aac2c31f
AM
280 else
281 RETVAL=1
282 fail
53a28f77 283 fi
aac2c31f
AM
284}
285
286# stop mysql
287mysqlstop() {
288 clusterdir="$1"
c85758f0 289 mysqlstatus "$clusterdir" stop
aac2c31f
AM
290 msg_stopping "MySQL $clusterdir"
291 busy
95b0575d 292
95b0575d 293 # try graceful shutdown -- send shutdown command
566e62bb 294 # requires mysql_sysadmin user proper privs
465c110e 295 /usr/bin/mysqladmin --defaults-file=$MYSQL_CONFIG ${MYSQL_SOCKET:+--socket=$MYSQL_SOCKET} shutdown >/dev/null 2>&1
c85758f0 296 mysqlstatus "$clusterdir" stop
95b0575d 297
c85758f0
AM
298 if [ "$MYSQL_PID" != "unknown" ]; then
299 kill -TERM "$MYSQL_PID" 2> /dev/null
300 for nr in $(seq 1 $(($MYSQL_STOP_WAIT_TIME*10))); do
301 [ -d "/proc/$MYSQL_PID" ] || break
302 sleep 0.1
303 done
304 fi
305
306 mysqlstatus "$clusterdir" stop
47fd5a6a 307 if [ "$MYSQL_STATUS" = "died" ]; then
350d9d8c 308 died
c85758f0 309 elif [ "$MYSQL_STATUS" = "running" -o "$MYSQL_STATUS" = "starting" ]; then
aac2c31f 310 fail
b92e5cd1 311 else
aac2c31f 312 ok
b92e5cd1 313 fi
aac2c31f
AM
314}
315
316#
317# check for running mysql instances; if any instance is running then
318# create subsys lock file
319#
320mysqlsubsys() {
350d9d8c
PG
321 # check for every defined db cluster in sysconfig file
322 for mysqldir in $DB_CLUSTERS; do
323 mysqlstatus "$mysqldir"
324 if [ "$MYSQL_STATUS" = "running" ]; then
325 touch /var/lock/subsys/mysql
326 return
327 fi
328 done
329 rm -f /var/lock/subsys/mysql
aac2c31f
AM
330}
331
332mysqlinit() {
333 clusterdir="$1"
8ee1d59c
AM
334
335 if [ -f /etc/mysqld.conf ]; then
350d9d8c
PG
336 nls "Running in \`no cluster compat' mode: can't initialize database."
337 nls "Move /etc/mysqld.conf away and rerun \`$0 init' (new config will be in $clusterdir)."
338 exit 1
8ee1d59c
AM
339 fi
340
521444a9
AM
341 if [ -f "$clusterdir/mysqld.conf" ]; then
342 mysqlgetconfig "$clusterdir"
343 else
344 MYSQL_USER="mysql"
345 MYSQL_CLUSTER_DIR="$clusterdir"
346 MYSQL_DATA_DIR="$clusterdir/mysqldb/db"
347 MYSQL_PIDFILE="$clusterdir/mysqldb/mysql.pid"
348 MYSQL_SOCKET="$clusterdir/mysqldb/mysql.sock"
fe98cc4a
ER
349
350 # this $MYSQL_CONFIG will be created later
351 MYSQL_CONFIG="$MYSQL_CLUSTER_DIR/mysqld.conf"
521444a9 352 fi
aac2c31f 353
d460d24d 354 show "Initializing cluster %s" "$clusterdir"; echo
aac2c31f 355
573e1dcc 356 # Check if not exist init database
e9ca44ab 357 if [ -d "$MYSQL_DATA_DIR/mysql" ]; then
c70c8930 358 nls "Seems that database is initialized now. Remove by hand %s" "$MYSQL_DATA_DIR/mysql"
b92e5cd1 359 nls "before initializing database."
aac2c31f
AM
360 nls "For now skipping cluster %s." "$clusterdir"
361 return
e9ca44ab 362 fi
363
aac2c31f 364 show "Creating privilege mysql tables for $MYSQL_DATA_DIR"
e9ca44ab 365 busy
d405c4eb
JB
366 TMP=/tmp TMPDIR=/tmp
367
a5d83bf8
ER
368 # Install this in the user table, too
369 hostname="`hostname --fqdn 2> /dev/null | tr -d '[:space:]'`"
61c1b7bf 370 [ "$hostname" = "localhost" -o -z "$hostname" ] && hostname="`hostname 2> /dev/null | tr -d '[:space:]'`"
a5d83bf8
ER
371 [ -z "$hostname" ] && hostname="localhost-unknown"
372
373 # Check if hostname is valid
374 if [ -z "$hostname" ]; then
375 deltext
376 fail
377 nls "Sorry, the host name is not configured."
378 nls "Please configure the 'hostname' command to return a hostname."
379 exit 1
380 elif ! hostname -i >/dev/null 2>&1; then
381 deltext
382 fail
383 nls "Sorry, the host '%s' could not be looked up." "$hostname"
384 nls "Please configure the 'hostname' command to return a correct hostname."
385 exit 1
386 fi
387
c4fbabf1 388 mkdir -p "$MYSQL_DATA_DIR" > /dev/null 2>&1
f5d63301
AM
389 # Using mysql:mysql for MYSQL_CLUSTER_DIR is creating SECURITY hole, root:root is proper
390 chown root:root "$MYSQL_CLUSTER_DIR"
391 chown mysql:mysql "$MYSQL_CLUSTER_DIR/mysqldb" "$MYSQL_DATA_DIR" > /dev/null 2>&1
653cf157 392 chmod 751 "$MYSQL_CLUSTER_DIR" "$MYSQL_CLUSTER_DIR/mysqldb"
444f9f3c
AM
393
394 if [ -f /usr/share/mysql/mysqld.conf -a ! -f "$MYSQL_CLUSTER_DIR/mysqld.conf" ]; then
b6369c60
ER
395 sed -e "
396 s#\(datadir.*\)=.*#\1= $MYSQL_DATA_DIR#g;
397 s#\(pid-file.*\)=.*#\1= $MYSQL_PIDFILE#g;
398 s#\(socket.*\)=.*#\1= $MYSQL_SOCKET#g;
399 s#@clusterdir@#$MYSQL_CLUSTER_DIR#g;
400 " /usr/share/mysql/mysqld.conf > "$MYSQL_CLUSTER_DIR/mysqld.conf"
54a1f368 401 chown root:root "$MYSQL_CLUSTER_DIR/mysqld.conf"
444f9f3c
AM
402 chmod 640 "$MYSQL_CLUSTER_DIR/mysqld.conf"
403 fi
cc4d3f78 404
a08fc1eb 405 if [ ! -e /var/lib/mysql/mysql.sock ] || [ -L /var/lib/mysql/mysql.sock ] && [ -z "$(readlink /var/lib/mysql/mysql.sock)" ]; then
0ca65658 406 sock=${MYSQL_SOCKET#/var/lib/mysql/} # make it relative if possible
5fe13e55 407 ln -s "$sock" /var/lib/mysql/mysql.sock
cc4d3f78 408 fi
aac2c31f 409
b9c4f95d 410 cat > $MYSQL_DATA_DIR/mysql-init.sql <<-EOF
bb39d376 411 CREATE DATABASE mysql;
4444725f 412 use mysql;
ac02fcd5 413 $(cat /usr/share/mysql/mysql_system_tables.sql)
566e62bb 414 $(sed -e "s,@@hostname,'$hostname',g" /usr/share/mysql/mysql_system_tables_data.sql)
b9c4f95d
ER
415EOF
416
417 ok=0
418 /usr/sbin/mysqld --bootstrap --skip-grant-tables \
c4fbabf1
ER
419 --datadir=$MYSQL_DATA_DIR --user=$MYSQL_USER \
420 --slave-load-tmpdir=$MYSQL_DATA_DIR --tmpdir=$MYSQL_DATA_DIR < \
dc7a177f 421 $MYSQL_DATA_DIR/mysql-init.sql 2>> /var/log/mysql/err && ok=1
5062ac41 422 [ -f $MYSQL_DATA_DIR/mysql/host.frm ] || ok=0
c4fbabf1 423
b9c4f95d
ER
424 if [ "$ok" = 1 ]; then
425 rm -f $MYSQL_DATA_DIR/mysql-init.sql
e9ca44ab 426 ok
aac2c31f 427 cat << END_OF_MSG
6a46c354 428
429PLEASE REMEMBER TO SET A PASSWORD FOR THE MySQL USERS!
81e0333c 430This is done (after starting database; press enter when asked for password) with:
6a46c354 431
dc7a177f
ER
432mysqladmin -u mysql -S $MYSQL_SOCKET password 'password'
433mysqladmin -h $hostname -u mysql -S $MYSQL_SOCKET password 'password'
566e62bb 434mysqladmin -u mysql_sysadmin -S $MYSQL_SOCKET password 'password'
6a46c354 435
566e62bb 436NOTE: mysql_sysadmin password should be placed to $MYSQL_CONFIG in
6a46c354 437mysqladmin section. See the manual for more instructions.
566e62bb 438(This user is used at logs rotation and server shutdown)
e9ca44ab 439
16bf26ff 440If you want to use new help tables in MySQL 4.1.x then you'll need to import the help data:
dc7a177f 441mysql -u mysql -p -S $MYSQL_SOCKET mysql < /usr/share/mysql/fill_help_tables.sql
16bf26ff 442
e9ca44ab 443END_OF_MSG
d405c4eb 444 else
e9ca44ab 445 fail
446 cat << END_OF_MSG
447Installation of grant tables FAILED!
448
6df74636
ER
449The initialization SQL script was preserved at $MYSQL_DATA_DIR/mysql-init.sql
450
b9c4f95d
ER
451Examine the logs in /var/log/mysql for more information. You can
452also try to start the mysqld daemon with:
e9ca44ab 453
454/usr/sbin/mysqld --skip-grant &
455
dc7a177f 456You can use the command line tool mysql to connect to the mysql
e9ca44ab 457database and look at the grant tables:
458
dc7a177f 459shell> mysql -u mysql mysql
e9ca44ab 460mysql> show tables
461
462Try 'mysqld --help' if you have problems with paths. Setting on
463logging in /etc/mysqld.conf gives you a log in /var/log/mysql/log that
464may be helpful. The latest information about MySQL is available on the
78b16243 465web at http://www.mysql.com/.
e9ca44ab 466
a3eb9e7b 467Please check PLD Linux ftp site for newer versions of this package.
e9ca44ab 468
469Please consult the MySQL manual section: 'Problems running
470mysql_install_db', and the manual section that describes problems on
471your OS. Another information source is the MySQL email archive.
472Please check all of the above before mailing us! And if you do mail
dc7a177f 473us, you MUST use the mysqlbug script!
e9ca44ab 474
475END_OF_MSG
476
aac2c31f
AM
477 exit 1
478 fi
479}
480
481#
482# End of useful functions.
483#
484
323256af 485start() {
aac2c31f
AM
486 if [ ! -f $MYSQL_ERRLOG ]; then
487 touch $MYSQL_ERRLOG
823c13f7 488 fi
54a1f368 489 chown mysql:mysql $MYSQL_ERRLOG
aac2c31f
AM
490 chmod 640 $MYSQL_ERRLOG
491
492 for mysqldir in $DB_CLUSTERS; do
c85758f0 493 mysqlstatus "$mysqldir" start
aac2c31f
AM
494 if [ "$MYSQL_STATUS" = "running" ]; then
495 msg_already_running "MySQL $mysqldir"
496 else
497 mysqlstart "$mysqldir"
498 fi
499 done
500 mysqlsubsys
323256af
ER
501}
502
503stop() {
aac2c31f 504 for mysqldir in $DB_CLUSTERS; do
c85758f0 505 mysqlstatus "$mysqldir" stop
aac2c31f
AM
506 if [ "$MYSQL_STATUS" = "not running" ]; then
507 msg_not_running "MySQL $mysqldir"
508 else
509 mysqlstop "$mysqldir"
510 fi
511 done
512 mysqlsubsys
323256af
ER
513}
514
515RETVAL=0
516case "$action" in
517 start)
518 start
519 ;;
520 stop)
521 stop
aac2c31f
AM
522 ;;
523 status)
524 for mysqldir in $DB_CLUSTERS; do
525 mysqlstatus "$mysqldir"
2bac5c2d 526 if [ "$MYSQL_STATUS" = "running" ]; then
27698ac1 527 show "MySQL cluster %s, PID %s" "$mysqldir" "$MYSQL_PID"
b2bb6a82 528 pids="$pids/$MYSQL_PID/"
2bac5c2d
ER
529 progress "$MYSQL_STATUS"
530 else
27698ac1 531 show "MySQL cluster %s" "$mysqldir"
2bac5c2d
ER
532 progress "$MYSQL_STATUS" "$CFAIL"
533 fi
534 echo
aac2c31f 535 done
b2bb6a82
ER
536
537 for pid in $(/sbin/pidof mysqld); do
538 if [[ $pids != */$pid/* ]]; then
539 running="$running $pid"
540 fi
541 done
542 if [ "$running" ]; then
543 nls "Warning: MySQL Daemon processes not under clusters.conf control:"
544 # see if we can display their status
545 for pid in $running; do
546 datadir=$(cat /proc/14165/cmdline | tr '\0' '\n' | fgrep -- --datadir=)
547 datadir=${datadir#--datadir=} # strip --datadir
548 mysqldir=${datadir%/mysqldb/db} # strip /mysqldb/db
549 mysqlstatus "$mysqldir"
550 if [ "$MYSQL_STATUS" = "running" ]; then
551 show "MySQL cluster %s, PID %s" "$mysqldir" "$pid"
552 progress "$MYSQL_STATUS"
553 else
554 show "MySQL cluster %s" "$mysqldir"
555 progress "$MYSQL_STATUS" "$CFAIL"
556 fi
557 echo
558 done
559 fi
aac2c31f
AM
560 ;;
561 restart|force-reload)
323256af
ER
562 stop
563 start
aac2c31f
AM
564 ;;
565 init)
566 for mysqldir in $DB_CLUSTERS; do
567 mysqlinit "$mysqldir"
568 done
60bd204c 569 exit $?
573e1dcc 570 ;;
6fb7a89b
AM
571 flush-logs)
572 for mysqldir in $DB_CLUSTERS; do
573 mysqlgetconfig "$mysqldir"
7c37979d
ER
574 # just if mysqld is really running
575 if /usr/bin/mysqladmin --defaults-file="$MYSQL_CONFIG" --socket="$MYSQL_SOCKET" ping >/dev/null 2>&1; then
576 /usr/bin/mysqladmin --defaults-file="$MYSQL_CONFIG" --socket="$MYSQL_SOCKET" flush-logs
577 fi
6fb7a89b 578 done
6fb7a89b 579 ;;
53a28f77 580 *)
02e96f2e 581 msg_usage "$0 {start|stop|init|restart|force-reload|status}"
582 exit 3
53a28f77 583esac
40c36bca 584
ee9b6a50 585exit $RETVAL
This page took 0.140451 seconds and 4 git commands to generate.