MYSQL 自动备份脚本

1.编辑mysql备份脚本

vim test.sh
1 #!/bin/bash
  2 USER=ws
  3 PASSWORD=********
  4 DATABASE=ws-test1
  5 BACKUP_DIR=/root/backup           #数据库备份sql文件的绝对路径
  6 LOGFILE=/root/backup/data_backup.log     #备份数据库的脚本的日志文件
  7 DATE=`date +%Y%m%d-%H%M`    #获取当前系统时间
  8 DUMPFILE=$DATE-ws-test1.sql      #备份数据库的sql文件名
  9 ARCHIVE=$DUMPFILE-tar.gz           #备份的数据库压缩后的文件名
 10 MYHOST=118.190.184.140            #备份的数据库所在主机地址
 11
 12 if [ ! -d $BACKUP_DIR ];                   #判断路径是否存在,不存在的话创建此路径
 13 then
 14 mkdir -p "$BACKUP_DIR"
 15 fi

 16 echo -e "\n" >> $LOGFILE
 17 echo "------------------------------------" >> $LOGFILE
 18 echo "BACKUP DATE:$DATE">> $LOGFILE
 19 echo "------------------------------------" >> $LOGFILE
 20

 21 cd $BACKUP_DIR      #进入备份路径
 22 /usr/bin/mysqldump -h$MYHOST -u$USER -p$PASSWORD $DATABASE > $DUMPFILE          #使用mysqldump命令备份数据库
 23
 24 if [[ $? == 0 ]]; then
 25 tar czvf $ARCHIVE $DUMPFILE >> $LOGFILE 2>&1                             #判断是否备份成功,若备份成功,则压缩备份数据库,否则将错误日志写入日志文件中去。
 26 echo "$ARCHIVE BACKUP SUCCESSFUL!" >> $LOGFILE
 27 rm -f $DUMPFILE
 28 else
 29 echo "$ARCHIVE Backup Fail!" >> $LOGFILE
 30 fi
~                                                              

2.定期删除超过一段时间的备份
vim test2.sh
#!/bin/bash
BACKUPDIR="/root/backup"       #备份数据库sql文件的绝对路径
KEEPTIME=1       #定义需要删除的文件距离现在时间的天数 
DELFILE=`find $BACKUPDIR -type f -mtime +$KEEPTIME -exec ls {} \;`
for delfile in ${DELFILE} 
do
rm -f $delfile
done
3.编辑定时任务
crontab -e
#分 时 日(每个月的那一天1-31) 月(一年中的那个月份1 -12)周(一周中的那一天0-6,0代表周日)
00 00 * * *  sh test.sh #每天12点本分数据库
00 00 * * 1 sh test2.sh #每个周日12执行删除数据库的脚本

相关推荐