33.shell编程-综合案例-定时备份数据库

  • 需求分析
    1. 每天凌晨2:30备份数据库demo到/data/backup/db
    2. 备份开始和备份结束能够给出相应的提示信息
    3. 备份后的文件要求以备份时间为文件名,并打包成 .tar.gz 的形式,比如:2021-03-12_230201.tar.gz
    4. 在备份的同时,检查是否有10天前备份的数据库文件,如果有就删除
  • 思路分析图

image

  • 案例:
  1. 在/usr/bin目录下编写脚本mysql_db_backup.sh
#!/bin/bash
# 备份目录
BACKUP=/data/backup/db
# 当前时间
DATETIME=$(date +%Y-%m-%d_%H%M%S)
echo $DATETIME
# 数据库地址
HOST=localhost
# 数据库用户名
DB_USER=root
# 数据库密码
DB_PW=12345678
# 备份的数据库名
DATABASE=demo

# 如果备份目录不存在,就创建
[ ! -d "$BACKUP/$DATETIME" ] && mkdir -p "$BACKUP/$DATETIME"

# 备份数据库
mysqldump -u$DB_USER -p$DB_PW --host=$HOST -q -R --databases $DATABASE | gzip > $BACKUP/$DATETIME/$DATETIME.sql.gz

# 将文件处理成 tar.gz
cd $BACKUP
tar -zcvf $DATETIME.tar.gz $DATETIME
# 删除对应的备份目录
rm -rf $BACKUP/$DATETIME

# 删除10天前的备份文件
find $BACKUP -atime +10 -name "*.tar.gz" -exec rm -rf {} \;
echo "备份数据库$DATABASE 成功~"
  1. 添加定时任务
# 首先执行crontab -e命令
crontab -e
# 写入内容
30 2 * * * /usr/sbin/mysql_db_backup.sh
# 之后保存退出
posted @ 2021-05-22 00:07  haojinglei  阅读(162)  评论(0)    收藏  举报