大家好,我是雄雄,欢迎关注微信公众号,雄雄的小课堂。
前言
前几天,服务器上不去了,可把我吓坏了,因为主要的产品数据库都在这个服务器上,有备份吗,也有,但是都在这个服务器上,现在服务器上不去,一切都白搭。
后来挂了一上午,总算是可以上去了,所以数据库这种东西,备份不光要本地备份,还得要异地备份,这样才更安全点,于是就结合AI,写了个shell
脚本,亲测可以用。
脚本文件-
下面就是shell文件
#!/bin/bash
# 数据库备份脚本
# ******配置部分*****
# 数据库用户名
DB_USER=""
# 数据库密码,请替换为您的密码
DB_PASSWORD=""
# 备份文件存放目录
BACKUP_DIR="/home/project/dbBackUp/sql"
# gzip压缩等级
COMPRESSION_LEVEL=9
# 保留备份的天数
KEEP_DAYS=7
# 获取当前时间戳
DATE=$(date +"%Y%m%d%H%M%S")
# 日志文件路径
LOG_FILE="$BACKUP_DIR/backup.log"
#当前时间
datetime1=$(date +"%Y%m%d")
# qshell的安装路径,根据实际情况调整 ,安装命令如下
# $ wget https://github.com/qiniu/qshell/releases/download/v2.12.0/qshell-v2.12.0-linux-386.tar.gz
# $ tar -xvf qshell-v2.12.0-linux-386.tar.gz
# $ mv qshell /usr/bin/
# $ chmod +x /usr/bin/qshell
QSHELL_DIR="/usr/bin"
# 替换为您的AccessKey
ACCESS_KEY=""
# 替换为您的SecretKey
SECRET_KEY=""
# 替换为您的存储桶名称
BUCKET_NAME="mxx-blognew"
# 存储桶所在的区域,例如: z0, z1, z2, asiaz0等
BUCKET_ZONE="cn-east-2"
# 创建备份目录如果它不存在
mkdir -p "$BACKUP_DIR"
# 指定要备份的数据库列表
DATABASES="blog_new wechatbot wewe-rss" # 请替换为您的数据库名称,多个数据库之间用空格分隔
# 开始备份
for DB in $DATABASES; do
# 备份单个数据库
mysqldump -u "$DB_USER" -p"$DB_PASSWORD" --databases "$DB" --single-transaction --quick --lock-tables=false --routines --triggers > "$BACKUP_DIR/${DB}_$DATE.sql"
# 压缩备份文件
gzip -$COMPRESSION_LEVEL "$BACKUP_DIR/${DB}_$DATE.sql"
# 记录备份日志
echo "备份 $DB 数据库 $DATE" >> "$LOG_FILE"
#文件路径
FILE_PATH="$BACKUP_DIR/${DB}_$DATE.sql.gz"
# 文件名称
FILE_NAME="${DB}_$DATE.sql.gz"
echo "开始上传文件:$FILE_PATH下的$FILE_NAME文件 到七牛云存储桶: $BUCKET_NAME"
# 使用qshell进行认证
"$QSHELL_DIR/qshell" account "$ACCESS_KEY" "$SECRET_KEY" muxiongxiong > /dev/null
# 上传文件到七牛云,参数分别是(桶的名称、备份的文件名、文件全路径)
"$QSHELL_DIR/qshell" rput "$BUCKET_NAME" "dbBackUp/$datetime1/$FILE_NAME" "$FILE_PATH" >> "$LOG_FILE" 2>&1
if [ $? -eq 0 ]; then
echo "$FILE_PATH 上传成功" >> "$LOG_FILE"
echo "上传成功"
else
echo "$FILE_PATH 上传失败" >> "$LOG_FILE"
echo "上传失败"
fi
done
echo "删除$keepDay天前的备份文件" >> "$logFile"
# 删除旧备份,保留最近$KEEP_DAYS天的备份
find "$BACKUP_DIR" -name "*.gz" -type f -mtime +$KEEP_DAYS -exec rm {} \;
# 脚本执行结束
echo "备份完成" >> "$LOG_FILE"
echo "备份完成"
基本上关键步骤都有注释,将变量改成你自己的就可以执行了。
一般配合宝塔面板使用会更好,或者写个shell
定时任务,每天定时执行一下这个脚本,然后再七牛云对应的路径下就有