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 "Will dump the following databases:"
138 for d in $DATABASES; do
142 echo "Dumping SQL data to file \"$OUTFILE\" ..."
143 echo "Start date: $(date)"
149 --databases $DATABASES"
150 $CMD >"$OUTFILE"; r=$?
151 if [ -n "$COMPRESS" -a -s "$OUTFILE" -a $r -eq 0 ]; then
152 echo "Dump done: $(date)"
153 echo "Compressing dump file ($COMPRESS) ..."
159 if [ -n "$STATS" ]; then
161 for f in "$OUTFILE"*; do
165 df -h "$(dirname "$OUTFILE")"
169 if [ $r -eq 0 ]; then
170 echo "Dump command exited with code 0, success."
172 echo "Dump command FAILED with code $r!" >&2