#! /bin/bash set -o nounset DATE=$(date +%Y%m%d%H%M) BCK_DIR=~/backup DB_LIST=$(mysql --batch -N <<< """show databases;""" |egrep -v "^(information_schema|performance_schema|mysql)$") RET=$? mysqldump --single-transaction --skip-lock-tables information_schema > ${BCK_DIR}/information_schema-${DATE}.sql.gz RET=$((RET + $?)) mysqldump --single-transaction --skip-lock-tables performance_schema > ${BCK_DIR}/performance_schema-${DATE}.sql.gz RET=$((RET + $?)) mysqldump --single-transaction --ignore-table=mysql.event mysql > ${BCK_DIR}/mysql-${DATE}.sql.gz RET=$((RET + $?)) for DB in $DB_LIST do mysqldump --single-transaction $DB |pigz > ${BCK_DIR}/${DB}-${DATE}.sql.gz RET=$((RET + $?)) done if [ $(find $BCK_DIR -type f -iname "*.sql.gz" -size -10k |wc -l) -gt 0 ] then echo "Error empty file" >&2 RET=$((RET + 1)) fi exit $RET