Linux服务器下使用cron定时自动备份mysql数据库

2 篇文章 0 订阅
1 篇文章 0 订阅

需求:

1、每小时对特定数据库进行备份
2、每隔特定时间进行数据删除
3、将数据库操作写日志

实现

第一步:复制以下脚本另存为dabackup.sh文件

#!/bin/bash
 
########################  MySQL系列数据库备份脚本  ##################
 
export PATH=/bin:/usr/bin:/usr/local/bin
BKDAY=`date +"%Y-%m-%d"`
BKTIME=`date +"%Y-%m-%d-%H"`
 
###### 下面数据请根据实际情况修改,BACKUP_KEEP_DAYS 为数据保存天数 ######
 
DB_BACKUP_PATH='/home/user/Workspace/Database/Backup'
DB_HOST='localhost'
DB_PORT='3306'
DB_USER='root'
DB_PASSWD='root'
DB_NAME='mysql'
BACKUP_KEEP_DAYS=30
LOG_FILE="$DB_BACKUP_PATH/"backup_log.log

##########################  开始备份并打包   ########################
 
mkdir -p ${DB_BACKUP_PATH}/${BKDAY}

echo "$(date +'%Y-%m-%d %H:%M:%S') : Database - ${DB_NAME} backup started" >> "$LOG_FILE"
# 如非使用InnoDB存储引擎且备份需要花费太多时间(会锁定),可删除“ --single-transaction \”参数
mysqldump -h ${DB_HOST} \
   -P ${DB_PORT} \
   -u ${DB_USER} \
   -p${DB_PASSWD} \
   --default-character-set=utf8 \
   --single-transaction \
   ${DB_NAME} | gzip > ${DB_BACKUP_PATH}/${BKDAY}/${DB_NAME}-${BKTIME}.sql.gz
 
if [ $? -eq 0 ]; then
  echo "$(date +'%Y-%m-%d %H:%M:%S') : Database - ${DB_NAME} backup completed" >> "$LOG_FILE"
else
  echo "$(date +'%Y-%m-%d %H:%M:%S') : Error found during backup database - ${DB_NAME}" >> "$LOG_FILE"
fi
 
########################  删实超过天数的备份  #######################
 
DB_DELDATE=`date +"%Y-%m-%d" --date="${BACKUP_KEEP_DAYS} days ago"`
 
if [ ! -z ${DB_BACKUP_PATH} ]; then
      cd ${DB_BACKUP_PATH}
      if [ ! -z ${DB_DELDATE} ] && [ -d ${DB_DELDATE} ]; then
            rm -rf ${DB_DELDATE}
            echo "$(date +'%Y-%m-%d %H:%M:%S') : Old backup files deleted" >> "$LOG_FILE"
      fi
fi
 echo "" >> "$LOG_FILE"
 
############################### End #############################

第二步:脚本路径下对dabackup.sh文件进行授权,赋予其他用户的执行权限
chmod a+x dabackup.sh

第三步:使用cron表达式定时执行dabackup.sh
1、启动cron service cron start
2、设置cron开机自启动 update-rc.d cron enable
3、在命令行中输入crontab -e,在底部添加 00 * * * * /脚本路径/dabackup.shcrontab -l查看是否添加成功

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值