mysql数据库备份脚本

  • by

        在数据库的日常维护工作中,除了保证业务的正常运行以外,就是要对数据库

进行备份,以免造成数据库的丢失,从而给企业带来重大经济损失。通常备份可以

按照备份时数据库状态分为热备和冷备,按照备份数据库文件的大小分为增量备

份、差异备份和全量备份。其中热备可以通过mysql replication主从复制进行实

时备份,percona的xtrabackup以及mysql自带的mysqldump等,可以根据不同

需求使用不同的备份方案。虽然在生产环境已经使用mysql replication主从复

制,但是还需要在计划任务中添加运行shell脚本在夜间业务不繁忙时进行数据库的

全量备份,以便在发生主从复制失败时,主从数据库大量数据不一致后的主从复制

的重做,同时进行完全备份可以更加保证数据库的安全性。

        以下是我在生产环境中使用的一个全备脚本,它的基本功能:1.自动压缩备份

mysql数据库。2.自动删除近10天前的备份文件。3.删除时显示删除进度。

vim mysql_dump.sh

#!/bin/bash  

#Shell Command For Backup MySQL Database Everyday Automatically By Crontab  

USER=root  

PASSWORD=”123456″  

DATABASE=”test”  

HOSTNAME=”192.168.156.61″  

WEBMASTER=test@qq.com  

BACKUP_DIR=/home/firefoxbug/mysql_back/ #备份文件存储路径  

LOGFILE=/home/firefoxbug/mysql_back/data_backup.log #日记文件路径  

DATE=`date ‘+%Y%m%d-%H%M’` #日期格式(作为文件名)  

DUMPFILE=$DATE.sql #备份文件名  

ARCHIVE=$DATE.sql.tgz #压缩文件名  

OPTIONS=”-h$HOSTNAME -u$USER -p$PASSWORD $DATABASE”  

#mysqldump -help  

#判断备份文件存储目录是否存在,否则创建该目录  

if [ ! -d $BACKUP_DIR ] ;  

then  

        mkdir -p “$BACKUP_DIR”  

fi  

#开始备份之前,将备份信息头写入日记文件  

echo ” ” >> $LOGFILE  

echo ” ” >> $LOGFILE  

echo “———————————————–” >> $LOGFILE  

echo “BACKUP DATE:” $(date +”%y-%m-%d %H:%M:%S”) >> $LOGFILE  

echo “———————————————– ” >> $LOGFILE  

#切换至备份目录  

cd $BACKUP_DIR  

#使用mysqldump 命令备份制定数据库,并以格式化的时间戳命名备份文件  

mysqldump $OPTIONS > $DUMPFILE  

#判断数据库备份是否成功  

if [[ $? == 0 ]]; then  

    #创建备份文件的压缩包  

    tar czvf $ARCHIVE $DUMPFILE >> $LOGFILE 2>&1  

    #输入备份成功的消息到日记文件  

    echo “[$ARCHIVE] Backup Successful!” >> $LOGFILE  

    #删除原始备份文件,只需保 留数据库备份文件的压缩包即可  

    rm -f $DUMPFILE  

else  

    echo “Database Backup Fail!” >> $LOGFILE  

fi  

#输出备份过程结束的提醒消息  

echo “Backup Process Done”

  1. crontab -e  
  2. */1 * * * * /tmp/auto_log.sh >/dev/null  2>&1 

发表评论

电子邮件地址不会被公开。 必填项已用*标注

17 − 7 =