资讯

精准传达 • 有效沟通

从品牌网站建设到网络营销策划,从策略到执行的一站式服务

shell脚本定时备份MySQL数据库数据并保留指定时间-创新互联

公司用到的MySQL数据库,经常有同事通过一顿骚操作把一些关键的配置数据误删,每次恢复都要花上不少时间,于是写了个shell脚本,结合corntab每天凌晨备份数据库,并保留7天。

创新互联公司是一家以网站建设公司、网页设计、品牌设计、软件运维、成都网站营销、小程序App开发等移动开发为一体互联网公司。已累计为酒楼设计等众行业中小客户提供优质的互联网建站和软件开发服务。

同样的备份脚本也可用于生产环境MySQL数据库定时备份。

环境:CentOS 7.5 / MySQL 5.7

#!/bin/sh

# 数据库账号信息
DB_USER="root"
DB_PWD="root"
DB_HOST="127.0.0.1"
DB_PORT="3306"

# MYSQL所在目录
MYSQL_DIR="/home/mysql"
# 备份文件存放目录
BAK_DIR="/home/db_backup"
# 时间格式化,如 20200902
DATE=`date +%Y%m%d`
# 备份脚本保存的天数
DEL_DAY=7

# 要备份的数据库,空格分隔
DATABASES=("apolloconfigdb" "apolloportaldb" "apolloconfigdb-uat" "frame-assistor" "frame-authorization" )

# 创建日期目录
mkdir $BAK_DIR/$DATE

echo "-------------------$(date +%F_%T) start ---------------" >>${BAK_DIR}/db_backup.log
for database in "${DATABASES[@]}"
do
  # 执行备份命令
  $MYSQL_DIR/bin/mysqldump --opt -u$DB_USER -p$DB_PWD -h$DB_HOST -P$DB_PORT ${database} > $BAK_DIR/$DATE/${database}.sql
done

echo "--- backup file created: $BAK_DIR/db_backup_$DATE.tar.gz" >>${BAK_DIR}/db_backup.log

# 将备份好的sql脚本压缩到db_backup_yyyyMMdd.tar.gz
tar -czf $BAK_DIR/db_backup_$DATE.tar.gz $BAK_DIR/$DATE

# 压缩后,删除压缩前的备份文件和目录
rm -f $BAK_DIR/$DATE/*
rmdir $BAK_DIR/$DATE

# 遍历备份目录下的压缩文件
LIST=$(ls ${BAK_DIR}/db_backup_*)
# 获取截止时间,早于该时间的文件将删除
SECONDS=$(date -d "$(date +%F) -${DEL_DAY} days" +%s)

for index in ${LIST}
do
  # 对文件名进行格式化,取命名末尾的时间,格式如 20200902
  timeString=$(echo ${index} | egrep -o "?[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]")
  if [ -n "$timeString" ]
  then
    indexDate=${timeString//./-}
    indexSecond=$( date -d ${indexDate} +%s )
    # 与当天的时间做对比,把早于7天的备份文件删除
    if [ $(( $SECONDS- $indexSecond )) -gt 0 ]
    then
      rm -f $index
      echo "---- deleted old backup file : $index " >>${BAK_DIR}/db_backup.log
    fi
  fi
done

echo "-------------------$(date +%F_%T) end ---------------" >>${BAK_DIR}/db_backup.log

当前题目:shell脚本定时备份MySQL数据库数据并保留指定时间-创新互联
文章转载:http://cdkjz.cn/article/egdhh.html
多年建站经验

多一份参考,总有益处

联系快上网,免费获得专属《策划方案》及报价

咨询相关问题或预约面谈,可以通过以下方式与我们联系

大客户专线   成都:13518219792   座机:028-86922220