shell编程综合案例,定时维护数据库

shell编程综合案例,定时维护数据库

需求/要求

1)每天凌晨 2:15 备份 数据库 testDB 到 /data/backup/db
2)备份开始和备份结束能够给出相应的提示信息
3)备份后的文件要求以备份时间为文件名,并打包成 .tar.gz 的形式,比如:
2018-12-05_021501.tar.gz
4) 在备份的同时,检查是否有 10 天前备份的数据库文件,如果有就将其删除

编写一个shell脚本(mysql_db_backup.sh) 脚本源代码如下:

#!/bin/bash

#完成数据库的定时备份
#备份的路径
BACKUP=/data/back/db
#当前时间作为文件名
DATETIME=$(date +%Y_%m_%d_%H%M%S)
#可以通过输出变量来调试
echo $DATETIME
#使用变量的时候,也可以用{}花括号的方式把变量名包起来,如下:
echo ${DATETIME}

echo "---------------------开始备份数据库---------------------"
echo "---------------------备份的路径是$BACKUP/$DATETIME.tar.gz---------------------"
#主机ip地址
HOST=localhost
#数据库用户名
DB_USER=root
#数据库密码
DB_PWD=root
#数据库名
DATABASE=testDB
#创建备份路径
#如果备份的文件夹路径存在的话,就直接使用,否则就创建
[ ! -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天前的备份文件
find ${BACKUP} -mtime +10 -name "*.tar.gz" -exec rm -rf {} \;
echo "-------------------------备份成功-------------------------"

截图如下:

shell编程综合案例,定时维护数据库_第1张图片

shell编程综合案例,定时维护数据库_第2张图片

执行mysql_db_backup.sh脚本,我们测试一下!

shell编程综合案例,定时维护数据库_第3张图片

配置一下定时任务调度,命令行输入crontab -e

每天凌晨 2:15 备份 数据库 testDB 到 /data/backup/db 大家看下面的截图

shell编程综合案例,定时维护数据库_第4张图片

配置定时任务调度成功!这样的话,每天的凌晨 2:15就会自动的备份数据库

你可能感兴趣的:(shell编程,综合案例,定时维护数据库)