File: //backup/mysqlbackup.sh
#!/bin/bash
#
# Backup all MySQL databases to specified dir
# (C)2011 greg@2amigos.us
#
BACKUP_DIR="/backup/mysql"
SEND_MAIL="0"
LOGFILE="/tmp/mysqlbackup.log"
EMAIL="greg@amigos.us"
SUBJECT="MySQL backup report for `hostname` (`date +%d.%m.%Y`)"
backup() {
/bin/echo -e "--> `date` Performing MySQL databases backup...\n"
for i in `/bin/echo show databases|/usr/bin/mysql|/bin/grep -v information_schema|/bin/grep -v Database|/bin/grep -v snort`; do
/bin/echo -n "`/bin/date +%T` $i: "
/bin/rm -f $BACKUP_DIR/$i.sql.gz &>/dev/null
/usr/bin/mysqldump --force --skip-lock-tables $i > $BACKUP_DIR/$i.sql
unc_size="`/usr/bin/du -sh $BACKUP_DIR/$i.sql|/usr/bin/awk '{print $1}'`"
/bin/gzip $BACKUP_DIR/$i.sql >/dev/null
/bin/echo "Uncompressed: $unc_size, Compressed: `/usr/bin/du -sh $BACKUP_DIR/$i.sql.gz|/usr/bin/awk '{print $1}'`"
done
/bin/echo -e "\n--> `date` MySQL backups completed!"
/bin/echo -e "\nTotal backups size: `/usr/bin/du -sh $BACKUP_DIR|/usr/bin/awk '{print $1}'`\n"
}
backup | /usr/bin/tee $LOGFILE
if [ $SEND_MAIL == "1" ]; then
/bin/mail -s "$SUBJECT" $EMAIL < $LOGFILE
fi