温馨提示×

centos lamp备份与恢复方案

小樊
39
2026-01-02 08:51:43
栏目: 智能运维

CentOS LAMP 备份与恢复方案

一 备份范围与策略

  • 备份范围
    • 数据库:使用 mysqldumpMySQL/MariaDB 进行逻辑备份(含结构+数据),避免直接拷贝数据目录导致不一致。
    • 网站文件:/var/www/html/ 及自定义上传目录(如 /data/www/)。
    • 配置与密钥:/etc/httpd//etc/php.ini/etc/php.d/、必要时 /root/.my.cnf(避免明文密码入库)。
    • 日志:建议备份 /var/log/httpd/(便于审计与排错)。
  • 备份策略
    • 频率与保留:建议 每周日全量 + 周一至周六增量;全量保留 4 周,增量保留 7 天(与最近全量对应)。
    • 传输与加密:优先 内网 传输;采用 rsync+SSHrsync daemon + 账号口令文件,端口 873
    • 目录规划(备份服务器):按客户端 IP/主机名 隔离,如 /data/rsync_backup/192.168.1.101/full_YYYYMMDD/inc_YYYYMMDD/
    • 安全与合规:备份文件权限 600/700,备份中心禁止公网访问,定期做恢复演练与容量评估。

二 备份实施步骤

  • 数据库备份(mysqldump)
    • 单库备份(推荐):
      • mysqldump -u root -p –single-transaction --routines --triggers --default-character-set=utf8mb4 dbname > /backup/db/dbname_$(date +%F).sql
    • 全库备份:
      • mysqldump -u root -p –all-databases --single-transaction --routines --triggers --default-character-set=utf8mb4 > /backup/db/full_$(date +%F).sql
    • 字符集:建议统一 utf8mb4,避免恢复乱码。
  • 网站与配置打包(tar)
    • 打包站点与配置:
      • tar -czvf /backup/web/html_$(date +%F).tar.gz -C /var/www/html .
      • tar -czvf /backup/conf/httpd_$(date +%F).tar.gz /etc/httpd /etc/php.ini /etc/php.d
  • 文件级增量与远程同步(rsync)
    • 本地快照(便于增量):
      • rsync -a --delete /var/www/html/ /backup/web/html_snap/$(date +%F)
    • 推送到备份服务器(daemon 模块示例):
      • rsync -avz --delete /backup/ rsyncbackup@192.168.10.200::lamp_backup/web-01/
    • 或 rsync+SSH:
      • rsync -avz --delete -e ssh /backup/ backup@192.168.10.200:/backup/lamp/web-01/
  • 自动化与调度
    • 将以上命令写入脚本(含日志、错误检查、清理),用 crontab 定时执行;示例(周日全量、其余增量):
      • 0 2 * * 0 /usr/local/backup/scripts/backup_full.sh >> /var/log/backup/backup.log 2>&1
      • 0 2 * * 1-6 /usr/local/backup/scripts/backup_inc.sh >> /var/log/backup/backup.log 2>&1
  • 批量与集中运维(可选)
    • 使用 Ansible 批量下发脚本、密钥与定时任务,统一目录与策略,便于 100 台级 规模管控。

三 恢复流程

  • 数据库恢复
    • 建议先创建空库(若全库备份可跳过建库):mysql -u root -p -e “CREATE DATABASE IF NOT EXISTS dbname CHARACTER SET utf8mb4;”
    • 恢复:mysql -u root -p dbname < /backup/db/dbname_YYYY-MM-DD.sql
    • 全库恢复:mysql -u root -p < /backup/db/full_YYYY-MM-DD.sql
  • 网站文件与配置恢复
    • 解压覆盖:
      • tar -xzvf /backup/web/html_YYYY-MM-DD.tar.gz -C /var/www/html
      • tar -xzvf /backup/conf/httpd_YYYY-MM-DD.tar.gz -C /
    • 权限与上下文:
      • chown -R apache:apache /var/www/html
      • restorecon -Rv /var/www/html /etc/httpd /etc/php.d
  • 服务重启
    • systemctl restart httpd
    • 如涉及存储过程/触发器,确认已随备份包含并启用。

四 自动化脚本与目录示例

  • 目录与权限
    • 备份服务器:
      • mkdir -p /data/rsync_backup/web-01/{full,inc}
      • chown -R rsyncbackup:backup /data/rsync_backup
      • chmod 750 /data/rsync_backup
    • 客户端:
      • mkdir -p /backup/{db,web,conf}
      • chown -R root:root /backup && chmod 700 /backup
  • 示例脚本(backup_inc.sh,节选)
    • #!/bin/bash
      • set -e
      • DATE=$(date +%F)
      • BACKUP_DIR=/backup
      • LOG=/var/log/backup/backup.log
      • mysqldump -u root -p --single-transaction --routines --triggers --default-character-set=utf8mb4 dbname > ${BACKUP_DIR}/db/dbname_${DATE}.sql 2>>${LOG}
      • tar -czvf ${BACKUP_DIR}/web/html_${DATE}.tar.gz -C /var/www/html . 2>>${LOG}
      • rsync -avz --delete -e ssh ${BACKUP_DIR}/ rsync@192.168.10.200:/backup/lamp/web-01/ >>${LOG} 2>&1
      • find ${BACKUP_DIR}/db -name “*.sql” -mtime +7 -delete
  • 定时任务
    • 0 2 * * 0 /usr/local/backup/scripts/backup_full.sh
    • 0 2 * * 1-6 /usr/local/backup/scripts/backup_inc.sh

五 验证与运维要点

  • 定期验证
    • 每周抽样恢复数据库与站点目录到测试环境,校验 数据一致性可用性;保留 校验记录
  • 监控与告警
    • 监控备份任务 退出码/日志关键字,对失败告警;备份中心磁盘 容量阈值 告警。
  • 安全加固
    • 备份中心仅内网访问;rsync 口令文件 600;SSH 使用 密钥登录;必要时对备份数据 加密存储
  • 保留与清理
    • 按策略自动清理过期备份;全量与增量 成对管理,避免“断链”无法回滚。
  • 故障与演练
    • 制定 应急预案(如误删库、站点被篡改),定期演练;对 100 台级 集群建议引入 批量管理/监控告警 体系。

0