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