Fork me on GitHub

Shell编程之备份数据库

备份数据库

我们的数据在时刻更新着,当数据量到达一定程度时就需要进行备份,方便我们进行管理

本篇介绍怎么在指定时间备份数据库并打包,同时在满足某一个条件时就删除已经备份过的数据库文件

shell编程综合案例

  • 需求分析

    1. 每天凌晨2:30备份数据库 数据库名到 /data/backup/db

    2. 备份开始和备份结束能够给出相应的提示信息

    3. 备份后的文件要求以备份时间为文件名,并打包成tar.gz的形式

    4. 在备份的同时,检查是否有十天前备份的数据库文件,如果有就将其删除

      #!/bin/bash

      #备份目录
      BACKUP=/data/backup/db

      #当前时间
      DATETIME=$(date +%Y-%m-%d_%H:%M:%S)
      echo $DATETIME

      #数据库主机名
      DB_HOST=localhost

      #数据库用户名
      DB_USER=root此处修改成自己的用户名

      #数据库密码
      DB_PW=lsh123456此处数据库密码根据需要修改成自己的数据库密码

      #备份的数据库名
      DATABASE=test

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

      #备份数据库
      mysqldump -u${DB_USER} -p${DB_PW} --host=${DB_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}成功"
posted @ 2021-06-17 19:29  Hui_Li  阅读(132)  评论(0编辑  收藏  举报