LNMP备份策略总览
面向 Linux + Nginx + MySQL/MariaDB + PHP 的备份,建议采用分层与多副本的思路:系统级镜像用于整机快速回滚,数据库采用逻辑或物理热备,网站文件与配置采用增量同步,配合加密、异地与定期恢复演练,形成可验证、可恢复、可持续优化的备份体系。
分层备份策略与工具
| 层级 | 目标 | 推荐工具 | 备份频率 | 保留周期 | 关键要点 |
|---|---|---|---|---|---|
| 系统级镜像 | 整机/分区快速恢复 | Timeshift(RSYNC/BTRFS)、Clonezilla、dd | 每周/每月 | 近2–4个快照 | 系统盘/分区级,适合系统崩溃、误删系统目录的恢复 |
| 数据库 | 数据一致性与可恢复性 | mysqldump(逻辑)、Percona XtraBackup(物理热备) | 每日 | 近7–30天 | 逻辑便于迁移与单库恢复;物理热备适合大库与零停机需求 |
| 网站文件与上传 | 代码与用户数据 | tar、rsync | 每日/每小时增量 | 近7–30天 | 建议按站点分目录备份,保留目录结构与权限 |
| Nginx/SSL/系统配置 | 快速还原服务 | tar、rsync | 配置变更即备 | 近30–90天 | 备份 /etc/nginx、证书、环境变量、定时任务等 |
| 依赖清单 | 可重复部署 | composer.json/requirements.txt | 依赖变更即备 | 与代码一致 | 便于在新环境快速恢复依赖与版本一致性 |
说明:
备份频率与保留周期建议
自动化与加密实践
#!/usr/bin/env bash
BACKUP_DIR="/backup/mysql"
DATE=$(date +%Y%m%d%H%M%S)
DB_USER="root"
DB_PASS="your_password"
DB_NAME="your_db"
mysqldump -u"$DB_USER" -p"$DB_PASS" --single-transaction --routines --triggers "$DB_NAME" \
| gzip > "$BACKUP_DIR/${DB_NAME}-${DATE}.sql.gz"
find "$BACKUP_DIR" -type f -mtime +30 -delete
rsync -aAX --delete /var/www/html/ user@backup-host:/backup/www/
恢复流程与验证要点
gunzip /backup/mysql/app-20250401.sql.gz
mysql -u root -p app < /backup/mysql/app-20250401.sql
tar -xzvf /backup/www/site-20250401.tar.gz -C /var/www/html/
chown -R www-data:www-data /var/www/html/
cp /backup/nginx/nginx.conf /etc/nginx/nginx.conf
nginx -t && systemctl reload nginx