#!/bin/bash
#Shell command for backup mysql database everyday automatically by crontab.
#Author: gHost Xu
host=127.0.0.1
user=******
password=******
port=3306
databases=(db1 db2)
backup_dir=/data/DB-Backups/
logfile=${backup_dir}backup.log
file_name=`date +'%Y%m%d-%H%M'`
if [ ! -d $backup_dir ]; then
mkdir -p "$backup_dir"
fi
echo "-----------------------------------------" >> $logfile
echo "Backup at: " $(date +'%y-%m-%d %H:%M:%S') >> $logfile
echo "-----------------------------------------" >> $logfile
cd $backup_dir
for database_name in ${databases[*]}
do
dumpfile=$database_name-$file_name.sql.tar.gz
/usr/local/mysql/bin/mysqldump -h$host -u$user -p$password -P$port --opt $database_name > $database_name.sql
if [[ $? == 0 ]]; then
tar -czf $dumpfile $database_name.sql >> $logfile 2>&1
echo "[$dumpfile] backup successful!" >> $logfile
rm -rf $database_name.sql
else
echo "[$dumpfile] backup failed!" >> $logfile
fi
done
find $backup_dir -name "*.sql.tar.gz" -type f -mtime +30 -exec echo {} "deleted." >> $logfile \;
find $backup_dir -name "*.sql.tar.gz" -type f -mtime +30 -exec rm {} \; > /dev/null 2>&1
echo "Backup process done." >> $logfile
echo " " >> $logfile