需求:
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.sh
,crontab -l
查看是否添加成功