3 # mkmysqldump -- dump MySQL (master) data
4 # Copyright (c)2015 Alexander Barton <alex@barton.de>
6 # This program is free software; you can redistribute it and/or modify
7 # it under the terms of the GNU General Public License as published by
8 # the Free Software Foundation; either version 3 of the License, or
9 # (at your option) any later version.
10 # Please read the file COPYING, README and AUTHORS for more information.
19 OUTFILE="$(hostname -s)-$(date "+%Y%m%d-%H%M%S").sql"
24 echo "$NAME [<options> ...]"
26 echo " --host|-h <host>"
27 echo " MySQL server hostname [\"$MYHOST\"]."
28 echo " --user|-u <user>"
29 echo " MySQL server user [\"$MYUSER\"]."
30 echo " --password|-p <password>"
31 echo " MySQL server password [\"$MYPW\"]".
32 echo " --outfile|-o <file>"
33 echo " Path and name of SQL dump file [\"$OUTFILE\"]."
34 echo " --outdir|-d <directory>"
35 echo " Directory for automatically named dump files."
37 echo " Display file and file system status summary."
39 echo " Compress SQL dump file using gzip(1)"
41 echo " Compress SQL dump file using bzip2(1)"
43 echo " Compress SQL dump file using xz(1)"
54 echo "-----> THERE HAVE BEEN ERRORS! <-----"
58 for cmd in mysql mysqldump; do
59 if ! which "$cmd" >/dev/null 2>&1; then
60 echo "$NAME: \"$cmd\" command not found!"
65 while [ $# -gt 0 ]; do
89 OUTFILE="$2/$(hostname -s)-$(date "+%Y%m%d-%H%M%S").sql"
117 echo "Dumping MySQL server on \"$MYHOST\" (user \"$MYUSER\"):"
118 echo "Started: $(date)"
121 [ -n "$MYPW" ] && PWSWITCH="--password='$MYPW'" || PWSWITCH=""
123 echo "Getting list of databases from server ..."
125 mysql -h "$MYHOST" -u "$MYUSER" $PWSWITCH -e 'show databases' \
126 | grep "^\| " | cut -d' ' -f2 | grep -v "Database" \
127 | grep -v "information_schema" \
128 | grep -v "performance_schema" \
131 if [ $? -ne 0 ]; then
132 echo "Failed to get list of databases! Aborting!"
137 echo "Checking slave status ..."
138 Slave_IO_Running=""; Slave_SQL_Running=""
139 eval "$(echo 'SHOW SLAVE STATUS\G' | mysql | sed -n '/Running/p' | sed 's/: /=/g')"
140 if [ -n "$Slave_IO_Running" -o -n "$Slave_SQL_Running" ]; then
141 if [ "$Slave_IO_Running" = "Yes" -a "$Slave_SQL_Running" = "Yes" ]; then
142 echo "Server is running as MySQL slave, replication is Ok."
144 echo "Server is running as MySQL slave, but replication FAILED!"
149 echo "Server is not running as MySQL slave. Ok."
152 echo "Will dump the following databases:"
153 for d in $DATABASES; do
157 echo "Dumping SQL data to file \"$OUTFILE\" ..."
158 echo "Start date: $(date)"
164 --databases $DATABASES"
165 $CMD >"$OUTFILE"; r=$?
166 if [ -n "$COMPRESS" -a -s "$OUTFILE" -a $r -eq 0 ]; then
167 echo "Dump done: $(date)"
168 echo "Compressing dump file ($COMPRESS) ..."
174 if [ -n "$STATS" ]; then
176 for f in "$OUTFILE"*; do
180 df -h "$(dirname "$OUTFILE")"
184 if [ $r -eq 0 ]; then
185 echo "Dump command exited with code 0, success."
187 echo "Dump command FAILED with code $r!" >&2