#:-: 编写Shell脚本定时备份数据库(实测)

脚本编写

需求
1.每天凌晨2点10分备份数据库atguiguDB到/data/backup/db
2.备份开始和备份结束能够给出相应的提示信息
3.备份后的文件以时间命名,并打包成.tar.gz形式,如2019-05-01_110101.tar.gz
4.在备份的同时,检查是否有10天前的备份数据库文件,有则删除之
源码

#!/bin/bash
#数据库的定时备份
#定义备份的路径
BACKUP=/www/wwwroot/mysqlback
DATETIME=`date +%Y_%m_%d_%H%M%S`
#echo "$DATETIME"
echo "=====start backup to $BACKUP/$DATETIME/$DATETIME.tar.gz======"
#主机
HOST=localhost
DB_USER=root
DB_PWD=c1a8fac88d99dbda
#要备份的数据库名称
DATABASE=www_wnana_com
#创建备份的路径,如果路径不存在则创建
[ ! -d "$BACKUP/$DATETIME" ] && mkdir -p "$BACKUP/$DATETIME"
#执行mysql的备份数据库指令
mysqldump -u${DB_USER} -p${DB_PWD} --host=$HOST $DATABASE | gzip > $BACKUP/$DATETIME/$DATETIME.sql.gz
#打包备份文件
cd $BACKUP
tar -zcvf $DATETIME.tar.gz $DATETIME
#删除临时目录
rm -rf $BACKUP/$DATETIME
#删除10天前的备份文件
#在$backup目录下按照时间找10天前的名称为*.tar.gz的文件,-exec表示执行找到的文件
find $BACKUP -mtime +10 -name "*.tar.gz" -exec rm rf {} \;
echo "===========backup success======"

加入定时任务

crontab -e

在打开的编辑器中输入以下一行代码,表示每晚1点10分执行后面的命令(shell脚本的路径)

10 1 * * * /opt/workspace/shell/backDB.sh

实践

#!/bin/bash
#数据库的定时备份
#定义备份的路径
BACKUP=/www/wwwroot/mysqlback
DATETIME=`date +%Y_%m_%d_%H%M%S`
#echo "$DATETIME"
echo "=====start backup to $BACKUP/$DATETIME/$DATETIME.tar.gz======"
#主机
HOST=localhost
DB_USER=root
DB_PWD=c1a8fac8
#要备份的数据库名称
DATABASE=wnana_com
#创建备份的路径,如果路径不存在则创建
[ ! -d "$BACKUP/$DATETIME" ] && mkdir -p "$BACKUP/$DATETIME"
#执行mysql的备份数据库指令
mysqldump -u${DB_USER} -p${DB_PWD} --host=$HOST $DATABASE | gzip > $BACKUP/$DATETIME/$DATETIME.sql.gz
#打包备份文件
cd $BACKUP
tar -zcvf $DATETIME.tar.gz $DATETIME
#删除临时目录
rm -rf $BACKUP/$DATETIME
# 上传到OSS进行备份
/root/ossutil64 cp -r $BACKUP/$DATETIME.tar.gz  oss://cloudduo/ossutil64/mysqlback/
#删除10天前的备份文件
#在$backup目录下按照时间找10天前的名称为*.tar.gz的文件,-exec表示执行找到的文件
find $BACKUP -mtime +10 -name "*.tar.gz" -exec rm rf {} \;
echo "===========backup success======"