自定义MySQL备份计划脚本

1.备份脚本

#!/bin/bash

##定义MySQL用户名和密码
MYSQL_USER="root" MYSQL_PASSWD="123456"

#获取当前时间字符串
now=$(date +"%Y_%m_%d_%H_%M_%S")

# 定义备份文件名
BACK_NAME="backup_$now.sql"

GZIP_BACK_NAME="backup_$now.tar.gz"

# 定义备份文件的存储路径
BACK_DIR="backup/"

# 执行mysqldump命令去执行备份操作
mysqldump --defaults-extra-file=config.cnf \
    --set-gtid-purged=OFF \
    --opt \
    -B \
    --default-character-set=utf8 \
    --flush-logs \
    --all-databases >$BACK_DIR$BACK_NAME

echo "开始压缩文件"
tar -czf $BACK_DIR$GZIP_BACK_NAME --no-xattrs $BACK_DIR$BACK_NAME
echo "压缩完成"

echo "删除sql文件"

rm -rf $BACK_DIR$BACK_NAME

backcount=$(find $BACK_DIR -mtime +3 -name backup_*.tar.gz | wc -l)

echo "当前备份数量:"$backcount
# 如果3天前的文件数量大于3,则删除
if [ ${backcount} -gt 3 ]; then
    find $BACK_DIR -mtime +3 -name backup_*.tar.gz | xargs rm -rf
fi
# 清理3天前的备份文件
# find $BACK_DIR -type f -mtime +3 | xargs rm -rf

echo $now"数据库备份完成"

2. 启动脚本

dump.sh

#!/bin/bash
ps -ef | grep mysqldump.sh | grep -v "grep"

if [[ $? -ne 0 ]]; then
    echo "start process....."
    nohup sh /www/wwwroot/mysql/mysqldump.sh >>/www/wwwroot/mysql/dump.log 2>&1 &
else
    echo "running ..."
fi

exit 0

计划任务配置

#每日凌晨3点进行一次数据全量备份
0  3  *  *  * sh /www/wwwroot/mysql/dump.sh
本作品采用《CC 协议》,转载必须注明作者和本文链接
每天一点小知识,到那都是大佬,哈哈
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!