数据备份实操手册:从 mysqldump 到可恢复验证
作者:夸父
一套可以直接抄的备份方案:每日自动备份数据库与素材、上传异地、保留策略,以及最重要的——"备份是可以恢复的"如何验证。
备份脚本(可直接抄)
#!/bin/bash
# backup.sh —— 每日 03:00 crontab 执行
DATE=$(date +%F)
KEEP=30
# 1. 数据库
mysqldump --single-transaction -u user -p'密码' aivideo | gzip > /backup/db-$DATE.sql.gz
# 2. 素材与成片(增量思路:当月目录)
tar czf /backup/storage-$DATE.tar.gz /path/to/storage/current
# 3. 环境变量
cp /path/to/.env /backup/env-$DATE.bak
# 4. 上传异地(ossutil 或 rclone)
rclone copy /backup remote:backup/$DATE
# 5. 清理本地 30 天前的旧备份
find /backup -mtime +$KEEP -delete
crontab 挂载:0 3 * * * /path/to/backup.sh >> /var/log/backup.log 2>&1。
恢复演练:备份的最终考试
没验证过恢复的备份不算备份。 每季度做一次演练:在测试目录导入最近的 dump(gunzip < db-xxx.sql.gz | mysql -u user -p aivideo_test),抽查项目数据完整性,storage 解压核对文件数。演练暴露的问题(权限、路径、版本)在真出事前修掉——恢复演练的 30 分钟,买的是灾难时刻的从容。
3-2-1 原则的简化版
标准 3-2-1(三份副本、两种介质、一份异地)对个人团队可以简化为:生产数据 + 同机备份 + 异地备份。三份里任何一份损坏,业务不中断。备份策略配合数据库维护的例行检查执行。
常见问题
备份频率多少合适?
数据库每日一次(凌晨低峰),storage 素材每日增量或每周全量。生产活跃期(批量任务多的日子)可以加密到每 6 小时一次。备份的成本远低于丢数据的代价。
备份存在同一台服务器上行吗?
不行。同机备份防的是"误删除",防不了"磁盘损坏/服务器失联"。至少一份备份在异地(OSS 或另一台机器)——这就是 [OSS 配置](/guides/oss-peizhi)里 backup Bucket 的用途。


