shell脚本备份数据库

编写shell脚本库备份数据库

具体要求如下:

  1. 每天凌晨 2:30 备份数据库 mysql 到 /data/backup/db
  2. 备份开始和备份结束都有对应的提示语
  3. 备份后的文件以时间为文件名,并打包成 .tar.gz 的形式。eg:2022-01-01_080808.tar.gz
  4. 在备份的同时,检查是否有超过15天前的备份数据库文件,如果有就将其删除

脚本如下:

#!/bin/bash

#备份路径
BACKUP=/data/backup/db

#显示当前时间
DATATIME=$(date "+%Y-%m-%d_%H%M%S")

#数据库地址
HOST=localhost

#数据库用户名
DB_USER=root

#数据库密码
DB_PW=123qwe..

#备份的数据库名
DATABASE=db_shell

#开始备份数据库提示语
echo "开始备份数据库${DATABASE}"

#创建备份目录,如果不存在,则新建目录
[ ! -d ${BACKUP}/${DATATIME} ] && mkdir -p "${BACKUP}/${DATATIME}"

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

#将文件处理成  tar.gz 
cd ${BACKUP}
tar -zcvf $DATATIME.tar.gz ${DATATIME}

#删除已备份的目录
rm -rf  ${BACKUP}/${DATATIME}

#删除10天前的备份文件
find ${BACKUP} -atime +10 -name "*.tar.gz" -exec rm -rf {} \;

#结束备份数据库提示语
echo "数据库${DATABASE}备份成功!"

定时任务如下:

[root@Rocky shell]# crontab -l
30 2  * * *   /shell/mysql_db.backup.sh

执行结果如下:

[root@Rocky shell]# ./mysql_db.backup.sh_0222 
开始备份数据库db_shell
mysqldump: [Warning] Using a password on the command line interface can be insecure.
2022-02-23_105956/
2022-02-23_105956/2022-02-23_105956.sql.gz
数据库db_shell备份成功!
[root@Rocky db]# ll
总用量 12
-rw-r--r--. 1 root root 1021 2月  22 16:59 2022-02-22_165934.tar.gz
-rw-r--r--. 1 root root 1018 2月  22 17:01 2022-02-22_170115.tar.gz
-rw-r--r--. 1 root root 1021 2月  23 10:59 2022-02-23_105956.tar.gz

解压查看压缩包sql内容:
在这里插入图片描述

  • 0
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值