Linux LNMP服务器备份策略
小樊
43
2025-11-16 09:54:06
LNMP服务器备份策略
一 备份范围与频率
- 备份范围应覆盖以下四类关键资产:
- 数据库:MySQL/MariaDB 的数据与结构(含系统库或按库导出)。
- 网站文件:PHP 项目代码、用户上传目录(如 /var/www/html 或自定义 /home/wwwroot)。
- 配置与密钥:Nginx 配置(如 /etc/nginx)、PHP 配置(如 /etc/php)、证书文件(如 /etc/letsencrypt)、应用密钥与环境变量。
- 系统镜像:在条件允许时,对系统盘做周期性镜像,用于灾难性恢复。
- 频率建议(可按业务调整):
- 数据库:每日全量;高变更业务可增加至每日多次或引入增量方案。
- 网站文件与配置:每日或每周全量;结合 rsync 做日常增量同步。
- 系统镜像:每周或每月一次;重大变更前后额外做一次。
二 备份方法与工具
- 数据库备份(MySQL/MariaDB)
- 全库导出:
- 命令:
mysqldump -u root -p --all-databases > /backup/mysql_$(date +%F).sql
- 压缩:
mysqldump -u root -p --all-databases | gzip > /backup/mysql_$(date +%F).sql.gz
- 单库导出:
- 命令:
mysqldump -u 用户名 -p 数据库名 > /backup/db_$(date +%F).sql
- 网站文件与配置备份
- 打包站点:
tar -czvf /backup/www_$(date +%F).tar.gz /var/www/html
- 打包 Nginx:
tar -czvf /backup/nginx_$(date +%F).tar.gz /etc/nginx
- 打包 PHP 配置:
tar -czvf /backup/php_$(date +%F).tar.gz /etc/php
- 增量与远程同步
- 文件增量:rsync -avz /var/www/html /backup/www/ --delete
- 远程拷贝:scp /backup/www_$(date +%F).tar.gz user@remote:/backup/
- 自动化与面板
- LNMP 一键包备份脚本:如 /root/lnmp1.6/tools/backup.sh,可配置本地或 FTP 远程备份,配合 crontab 定时执行。
- 可视化面板:如 宝塔面板 的网站/数据库备份功能,便于非命令行场景快速配置。
三 保留策略与存储架构
- 多级备份与异地容灾
- 建议采用 本地 + 远程 + 云端 的多级策略,降低单点故障风险;远程存储可选 FTP/对象存储,云端可选 S3 兼容 或厂商存储。
- 保留周期与命名规范
- 示例保留策略(可按需调整):
- 近 7 天:每日备份(本地快速回滚)
- 近 30 天:每周备份(远程/云端)
- 近 90 天:每月备份(云端/冷备)
- 统一命名:
<组件>_<站点/库名>_YYYY-MM-DD[_序号].sql[.gz]|tar.gz,便于检索与清理。
- 加密与访问控制
- 备份文件在传输与静态存储阶段均应加密,密钥集中管理并限制访问权限;仅授权人员可操作备份。
四 自动化与监控
- 定时任务
- 示例(每日 03:00 执行 LNMP 自带脚本):
0 3 * * * /root/lnmp1.6/tools/backup.sh
- 示例(每日 02:00 执行自定义脚本):
0 2 * * * /usr/local/bin/backup_lnmp.sh
- 脚本要点
- 创建时间戳目录:
/backup/2025-11-16/
- 依次备份:数据库(含压缩)、网站文件、Nginx 与 PHP 配置
- 计算并记录校验值(如 sha256sum),上传至远程/云端
- 清理过期备份(依据保留策略)
- 输出日志并做备份监控与告警(如日志关键字、返回码)
- 监控与日志
- 记录关键指标:备份开始/结束时间、耗时、大小、是否成功、校验值
- 异常告警:任务失败、磁盘空间不足、上传失败、校验不一致。
五 恢复流程与演练
- 数据库恢复
- 全库:
mysql -u root -p < /backup/mysql_2025-11-16.sql
- 单库:
mysql -u 用户名 -p 数据库名 < /backup/db_2025-11-16.sql
- 网站文件与配置恢复
- 站点:
tar -xzvf /backup/www_2025-11-16.tar.gz -C /
- Nginx:
tar -xzvf /backup/nginx_2025-11-16.tar.gz -C /
- 变更生效前检查:
nginx -t && systemctl reload nginx
- 系统镜像恢复
- 仅在灾难恢复场景使用,操作前确认目标磁盘与分区:
dd if=backup.img of=/dev/sda bs=4M
- 演练与验证
- 建议每 1–3 个月做一次恢复演练,核对数据一致性与可用性;每次演练后更新灾难恢复预案与操作手册。