mysqlxtrabackup备份脚本

#!/bin/bash
#该脚本为MySQL数据库备份策略,用于定期备份 MySQL数据库,以便在发生数据丢失时可以恢复数据(未包含恢复数据操作)。
#备份策略:
#计划任务每天凌晨两点运行脚本,判断为周一则完整备份;
#判断为周日:则查询并匹配备份路径下六天前的完整备份的数据做差异备份;
#非周一或周日,则自动做增量备份。若未做周一备份则不能周二实现备份。此处注意。
#备份数据文件存储路径,xtrabackup自动命名备份文件为时间戳。
#备份数据文件保留半个月:每周都会做完整备份,超过15天的备份文件自动删除;

BACKUP_DIR="/home/mysql_App/mysql_xtrabackup/"
#日志记录:记录备份过程中的日志路径,echo追加生成mysql_backup.log文件
BACKUP_LOG="/home/mysql_App/mysql_xtrabackup_log/"
#设置邮件接收人
recipients="通知人邮箱"
[ -d $BACKUP_DIR ] || mkdir -p $BACKUP_DIR &>/dev/null
[ -d $BACKUP_LOG ] || mkdir -p $BACKUP_LOG &>/dev/null
#设置mysql账户和密码为变量。生产环节中需DBA专门设置专门用来备份数据的账号,只赋予少数权限。
#SELECT, RELOAD, LOCK TABLES
#grant SELECT, RELOAD, LOCK TABLES on *.* to 'bbxbackup'@'localhost' identified by ‘yourpassword’
SQL_USER='root'
SQL_PQSSWD='Hh***254'
WEEK=`date +%w`
NIU='牛牛报告'
case ${WEEK} in
    1)
    innobackupex --user=${SQL_USER} --password="'$SQL_PQSSWD'"  $BACKUP_DIR
    if [ $? -eq 0 ];then
        echo "date +"%y-%m-%d_%H-%M-%S"  mysql full backup Success" >>$BACKUP_LOG
        sendDingMysql " "$NIU":$(date '+%Y-%m-%d %H:%M') 完全备份成功"
        echo "$(date '+%Y-%m-%d %H:%M') 完整备份已完成 登录服务器可查看"| mail -s "数据库备份信息"   $recipients
    ;;
    7)
    FULLBACKDAY=`date -d'-6 day' +%Y-%m-%d`
    FULL_BACK=$(find ${BACKUP_DIR} -name ${FULLBACKDAY} -exec basename {} \;)
    if [ -f ${FULL_BACK} ];then
        innobackupex --user=${SQL_USER} --password="'$SQL_PQSSWD'" --incremental $BACKUP_DIR --incremental-basedir=${BACKUP_DIR}${FULL_BACK} --incremental
        if [ $? -eq 0 ];then
            echo "date +"%y-%m-%d_%H-%M-%S"  mysql difference backup Success" >>$BACKUP_LOG
            sendDingMysql ""$NIU":$(date '+%Y-%m-%d %H:%M') 差异备份成功!"
            echo "$(date '+%Y-%m-%d %H:%M') 差异备份已完成 登录服务器可查看" | mail -s "数据库备份信息" $recipients
        else
            echo  "date +"%y-%m-%d_%H-%M-%S" 未查询到昨日备份or完整备份数据 mysql difference backup Faild" >>$BACKUP_LOG
            echo "$(date '+%Y-%m-%d %H:%M') 差异备份失败  未查询到完整备份数据" | mail -s "数据库备份信息" $recipients
            sendDingMysql " "$NIU":$(date '+%Y-%m-%d %H:%M') 未查询到完整备份数据 差异备份失败"
        fi
    fi
    ;;
    *)
    YESTERDAY=`date -d'-1 day' +%Y-%m-%d`
    YESTER_back=$(find ${BACKUP_DIR} -name ${YESTERDAY} -exec basename {} \;)
    if [ -f ${YESTER_back} ];then
        innobackupex --user=${SQL_USER} --password="'$SQL_PQSSWD'" --incremental $BACKUP_DIR --incremental-basedir=${BACKUP_DIR}${YESTER_back}
        if [ $? -eq 0 ];then
            echo "date +"%y-%m-%d_%H-%M-%S"  mysql increment backup Success" >>$BACKUP_LOG
            echo "$(date '+%Y-%m-%d %H:%M') 增量备份已完成 登录服务器可查看" | mail -s "数据库备份信息" $recipients
            sendDingMysql ""$NIU":$(date '+%Y-%m-%d %H:%M')增量备份成功"

        else
            echo  "date +"%y-%m-%d_%H-%M-%S" 未查询到昨日备份or完整备份数据 mysql increment backup Faild" >>$BACKUP_LOG
            echo "$(date '+%Y-%m-%d %H:%M') 增量备份失败  未查询到昨日备份or完整备份数据" | mail -s "数据库备份信息" $recipients
            sendDingMysql ""$NIU":$(date '+%Y-%m-%d %H:%M') 增量备份失败 未查询到昨日备份or完整备份数据"
        fi
    fi
    ;;
esac

#备份数据文件保留半个月:每周都会做完整备份,超过15天的备份文件自动删除;
#删除超过保留天数的备份文件
find ${BACKUP_DIR} -type f -mtime +15 -delete
#crontab -e 设置计划任务,每天凌晨2点整运行备份脚本。脚本存放位置:/root/shell/
00 2 * * * /bin/bash  /root/shell/mysqlxtrabackup.sh &>/dev/null 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值