温馨提示×

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 个月做一次恢复演练,核对数据一致性与可用性;每次演练后更新灾难恢复预案与操作手册。

0