数据库备份脚本,晚上11点59分定时执行备份,并删除过期备份文件

- 每晚11点59分备份

$    crontab  -e

59 23 * * *   /data/backup/db/test.sh  >  /dev/null 2>&1 &

提示:需要赋予该文件执行权限

1、加最高权限

$    chmod 775  文件名

2、加可执行权限

$    chmod +x   文件名

- 在 /data/backup/db 目录下新建 test.sh

#!/bin/bash

#功能说明:本功能用于备份数据库

PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:

export PATH

#数据库名,可以定义多个数据库,中间以空格隔开,如:test test1 test2

dbnames='test test1'

#备份时间

backtime=`date +%Y%m%d`

#日志备份路径

logpath="/data/backup/db/mysql-log"

#数据备份路径

datapath="/data/backup/db/database-sql"

# 删除$DAYS天前的备份文件

DAYS=3

#日志记录头部

echo "备份时间为${backtime},备份数据库表 ${dbnames} 开始" >> ${logpath}/mysqllog.log

#正式备份数据库

for dbname in $dbnames; do

source=`mysqldump -uroot -proot ${dbname}> ${datapath}/${backtime}-${dbname}.sql` 2>> ${logpath}/mysqllog.log

#备份成功以下操作

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

        #进入数据备份路径

        cd $datapath

        #为节约硬盘空间,将数据库压缩

        tar -zcvf ${backtime}-${dbname}.tar.gz ${backtime}-${dbname}.sql

        #删除原始文件,只留压缩后文件

        rm -f ${datapath}/${backtime}-${dbname}.sql

        echo "数据库表 ${dbname} 备份成功!!" >> ${logpath}/mysqllog.log

        #判断git目录是否存在 上传git
        if [ -d ".git" ]; then
                git add . && git commit -m "${backtime} 更新" && git push
                echo "";
                echo "${backtime} update commit !!!!!!";
        else
                git init
                git remote add origin [email protected]/xxx.git
                git add .
                git commit -m "first commit"
                git push -u origin master
                echo ""
                echo "first commit !!!!!!"
        fi

else

        #备份失败则进行以下操作

        echo "数据库表 ${dbname} 备份失败!!" >> ${logpath}/mysqllog.log

fi

#删除$DAYS天前的备份文件

OLDFILE=$(date -d "-$DAYS day" +"%Y%m%d")-${dbname}.tar.gz
if [ -f $OLDFILE ]; then
        cd $datapath
        rm -f $OLDFILE
        echo "delete file: $OLDFILE($DAYS day(s) ago)"  >> ${logpath}/mysqllog.log
fi

done

你可能感兴趣的:(数据库备份脚本,晚上11点59分定时执行备份,并删除过期备份文件)