数据库备份脚本 (1032 views)

gHOST

2019-09-05 09:07:51

#!/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