mysql备份脚本

mysql备份分:主要功能有备份多个数据库,将这几个数据库一起打包。只保留最近一星期的备份,结合ftp脚本可以传到另外一台服务器。

#!/bin/bash

# Use mysqldump --help get more detail.

#
# 定义变量,请根据具体情况修改
# 定义脚本目录
scriptsDir=`pwd`

# 定义用于备份数据库的用户名和密码
user=root
userPWD=*********

# 定义备份数据库名称  *** 代表数据名,用空格隔开
dbNames=(*** ***)
# 定义备份目录
dataBackupDir=/var/mysqlfile

# 定义邮件正文文件
eMailFile=$dataBackupDir/log/email.txt

# 定义邮件地址
eMail=*****

# 定义备份日志文件
logFile=$dataBackupDir/log/mysqlbackup.log

# DATE=`date -I`
DATE=`date  +%Y%m%d`

WEEKDATE=`date -d '-7 day' +%Y%m%d`

echo `date  "+%Y-%m-%d %H:%M:%S"` > $eMailFile

for dbName in ${dbNames[*]}
do
        # 定义备份文件名
        dumpFile=$dataBackupDir/$dbName-$DATE.sql.gz

        # 使用mysqldump备份数据库,请根据具体情况设置参数
        mysqldump -u$user -p$userPWD $dbName | gzip > $dumpFile

done

#文件打包
cd $dataBackupDir
tar -zcvf db.linode.$DATE.tar.gz  *$DATE.sql.gz
#删除不是打包的文件,保留总的备份
rm -f *$DATE.sql.gz


#删除一星期前总的备份
rm -f  db.linode.$WEEKDATE.tar.gz

if [[ $? == 0 ]]; then
        echo "DataBase Backup Success!" >> $eMailFile
else
        echo "DataBase Backup Fail!" >> $emailFile
fi

# 写日志文件
echo "================================" >> $logFile
cat $eMailFile >> $logFile
echo $dumpFile >> $logFile


# 发送邮件通知
cat $eMailFile | mail -s "MySQL Backup" $eMail