centos lamp备份与恢复方案
小樊
39
2026-01-02 08:51:43
CentOS LAMP 备份与恢复方案
一 备份范围与策略
- 备份范围
- 数据库:使用 mysqldump 对 MySQL/MariaDB 进行逻辑备份(含结构+数据),避免直接拷贝数据目录导致不一致。
- 网站文件:/var/www/html/ 及自定义上传目录(如 /data/www/)。
- 配置与密钥:/etc/httpd/、/etc/php.ini、/etc/php.d/、必要时 /root/.my.cnf(避免明文密码入库)。
- 日志:建议备份 /var/log/httpd/(便于审计与排错)。
- 备份策略
- 频率与保留:建议 每周日全量 + 周一至周六增量;全量保留 4 周,增量保留 7 天(与最近全量对应)。
- 传输与加密:优先 内网 传输;采用 rsync+SSH 或 rsync 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 台级 集群建议引入 批量管理/监控告警 体系。