#!/bin/bash PATH="/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin" DIR="/DATA/Backup/MySQL" if [ -z $1 ]; then echo "database name missing! use --all for all db's" exit 1; elif [ $1 = '--all' ]; then echo "full backup" for i in `mysqlshow --defaults-file=/root/.my.cnf | awk '{print $2}' | grep -v Databases`; do if [ "$i" != "information_schema" ] && [ "$i" != "performance_schema" ]; then if test -f ${DIR}/${i}.sql; then echo "Move ${DIR}/${i}.sql to ${DIR}/${i}.sql.1" mv ${DIR}/${i}.sql ${DIR}/${i}.sql.1 fi echo "dump ${i} to ${DIR}/${i}.sgl" mysqldump --defaults-file=/root/.my.cnf --single-transaction --events --opt -QF -r${DIR}/${i}.sql $i chmod 600 ${DIR}/${i}.sql fi done; elif [ -n $1 ]; then echo "Starting backup of $1" if test -f $DIR/$1.sql; then echo "Move $DIR/$1.sql to $DIR/$1.sql.1" mv ${DIR}/${1}.sql ${DIR}/${1}.sql.1 fi mysqldump --defaults-file=/root/.my.cnf --single-transaction --opt -QF -r${DIR}/${1}.sql $1 chmod 600 ${DIR}/${1}.sql fi echo "Done" exit 0;