未分类

【2.0脚本自动部署】编写Shell脚本实现mysqldump定时全量备份

2026-05-20 11:37 · 0 次阅读 · 1 分钟阅读 · 添加评论
📑 文章目录 收起 ▴

自带压缩、自动清理旧备份、日志记录,搭配 crontab 实现定时自动化备份

先创建备份目录

mkdir -p /backup/mysql

-p 参数会自动创建父目录 /backup 和子目录 /backup/mysql,一步到位

再创建脚本文件

nano /backup/mysql_backup.sh

MySQL 定时全量备份脚本
#!/bin/bash
# MySQL 全量备份脚本 (mysqldump)

# ===================== 配置项(直接填你的信息)=====================
# MySQL 用户名
DB_USER="wp_user"
# MySQL 密码
DB_PASS="wp123456"
# 要备份的数据库名
DB_NAME="wp_db"
# 备份文件存放目录
BACKUP_DIR="/backup/mysql"
# 备份保留天数(超过自动删除)
RETENTION_DAY=7
# 备份日期格式
DATE=$(date +%Y%m%d_%H%M%S)

# ===================== 执行备份 =====================
# 创建备份目录(不存在则自动创建)
mkdir -p $BACKUP_DIR

# mysqldump 全量备份 + 压缩
mysqldump -u$DB_USER -p$DB_PASS --single-transaction --default-character-set=utf8mb4 $DB_NAME | gzip > $BACKUP_DIR/$DB_NAME-$DATE.sql.gz

# ===================== 清理旧备份 =====================
find $BACKUP_DIR -name "*.sql.gz" -mtime +$RETENTION_DAY -delete

# ===================== 备份日志 =====================
echo "[$(date '+%Y-%m-%d %H:%M:%S')] 备份完成:$BACKUP_DIR/$DB_NAME-$DATE.sql.gz" >> $BACKUP_DIR/backup.log
赋予执行权限

chmod +x /backup/mysql_backup.sh

测试脚本(手动运行一次)

/backup/mysql_backup.sh

执行后,去 /backup/mysql 目录查看,会生成 .sql.gz 备份文件

设置定时任务(每天凌晨 2 点自动备份)
# 编辑定时任务
crontab -e

#文本最后一行添加
0 2 * * * /backup/mysql_backup.sh
备份文件管理

备份文件位置/backup/mysql/文件名格式wp_db-20260521_020000.sql.gz

恢复备份命令:

# 解压备份文件
gzip -d wp_db-20260521_020000.sql.gz
# 恢复数据库
mysql -uwp_user -pwp123456 wp_db < wp_db-20260521_020000.sql

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注