3.8.6 恢复流程与演练
3.8.6 恢复流程与演练#
恢复流程的核心是将备份介质在最短时间内恢复到可用状态,并满足既定的 RPO/RTO。通过标准化流程、可执行命令清单、演练与复盘,保证在人员、时间与资源受限场景下依然可恢复业务。
恢复流程原理草图(逻辑链路)
标准化恢复流程(含命令示例)
1) 启动与决策(选择策略)
- 判断故障类型(误删/系统盘损坏/数据库损坏/整机宕机)
- 选择恢复策略(文件级/镜像/全量+增量/快照回滚)
2) 环境准备(系统与权限检查)
# 检查系统与磁盘空间
uname -a
df -h
lsblk
# 检查备份挂载与读权限
mount | grep /backup
ls -lh /backup
命令解释:
- df -h 查看目标磁盘可用空间是否满足恢复容量。
- lsblk 确认磁盘分区与挂载点一致,避免误写。
3) 介质定位与完整性校验
# 选择备份集并校验
ls -lh /backup/2024-10-10/full/
sha256sum -c /backup/2024-10-10/full/SHA256SUMS
预期效果:校验输出全部为 OK,否则需更换备份集或重新传输。
4) 数据恢复(以 tar + rsync 为例)
# 恢复文件系统:解压全量
mkdir -p /restore/rootfs
tar -xpf /backup/2024-10-10/full/rootfs.tar.gz -C /restore/rootfs
# 增量恢复:按时间顺序覆盖
rsync -aHAX --delete /backup/2024-10-10/inc1/ /restore/rootfs/
rsync -aHAX --delete /backup/2024-10-10/inc2/ /restore/rootfs/
命令解释:
- tar -xpf 保留权限/时间;-C 指定恢复目录。
- rsync -aHAX 保留硬链接/ACL/扩展属性。
5) 一致性校验
# 目录级文件数量与权限对比
find /restore/rootfs -type f | wc -l
getfacl -R /restore/rootfs | head
# 随机抽样校验文件哈希
sha256sum /restore/rootfs/etc/passwd
6) 应用拉起与健康检查(示例:Nginx)
# 挂载恢复目录并切换根
mount --bind /restore/rootfs /mnt
chroot /mnt /bin/bash
# 启动服务并检查状态
systemctl start nginx
systemctl status nginx --no-pager
# 检查端口
ss -lntp | grep 80
7) 收尾与复盘
# 记录恢复耗时与关键步骤
date
journalctl -xe | tail -n 50
常见恢复场景与操作示例
- 单文件误删(rsync 或快照)
# 从备份中恢复单文件
rsync -av /backup/2024-10-10/full/etc/nginx/nginx.conf /etc/nginx/nginx.conf
nginx -t && systemctl reload nginx
- 系统盘损坏(镜像恢复)
# dd 方式恢复系统镜像
dd if=/backup/images/os.img of=/dev/sda bs=64M status=progress
sync
- 数据库损坏(示例:MySQL 全量+日志)
# 解压全量备份
tar -xpf /backup/mysql/full-2024-10-10.tar.gz -C /var/lib/mysql
# 重放 binlog
mysqlbinlog /backup/mysql/binlog.000123 | mysql -uroot -p
排错清单(常见问题与处理)
- 空间不足:df -h 发现剩余空间不足,先扩容或使用新盘挂载 /restore。
- 权限错误:恢复后权限异常,执行 chown -R root:root /restore/rootfs。
- 校验失败:sha256sum -c 报错,重新拉取备份或切换时间点。
- 服务启动失败:查看 systemctl status 与 journalctl -xe,重点排查配置与依赖文件。
演练脚本(示例:自动化恢复检查)
#!/usr/bin/env bash
# /opt/recovery/drill_check.sh
set -e
echo "[1] 环境检查"
df -h | grep -E "/restore|/backup"
echo "[2] 校验备份完整性"
sha256sum -c /backup/2024-10-10/full/SHA256SUMS
echo "[3] 恢复核心目录"
mkdir -p /restore/rootfs
tar -xpf /backup/2024-10-10/full/rootfs.tar.gz -C /restore/rootfs
echo "[4] 服务配置校验"
chroot /restore/rootfs nginx -t
echo "[OK] 演练完成"
演练指标与记录要求
- RPO/RTO 达标率:记录目标与实际值
- 恢复成功率:恢复步骤是否一次成功
- 问题闭环率:问题是否形成改进清单
- 记录模板:时间点、操作者、恢复路径、耗时、错误与解决方案
练习
1) 在测试机上创建 /data/test.txt 并删除,使用备份恢复该文件。
2) 模拟 nginx.conf 损坏,使用备份恢复并验证 nginx -t。
3) 编写脚本自动完成:校验、恢复、服务检查三步流程。