大数跨境
0
0

服务器运维基础系列(十六):备份与灾备演练(RPO/RTO、冷/温/热备、切换与回滚脚本)

服务器运维基础系列(十六):备份与灾备演练(RPO/RTO、冷/温/热备、切换与回滚脚本) 云容灾备份安全治理
2025-11-05
4
导读:目标:建立从“数据备份 → 灾备拓扑 → 切换/回滚演练 → 监控与度量”的完整闭环,覆盖 RPO/RTO 目

目标:建立从“数据备份 → 灾备拓扑 → 切换/回滚演练 → 监控与度量”的完整闭环,覆盖 RPO/RTO 目标制定、冷/温/热备架构、数据库与文件/块级备份、对象存储与不可变备份(防勒索)、演练流程与脚本化样例。

一、核心指标与策略选择

  • RPO(恢复点目标):允许数据丢失的上限时间(如 ≤ 5 分钟)。

  • RTO(恢复时间目标):从故障到恢复可用的时间(如 ≤ 15 分钟)。

  • 策略匹配:

    • 冷备(低成本):RPO 小时级,RTO 小时级,适合低频业务。

    • 温备(均衡):RPO 分钟级(日志/增量),RTO 分钟~十几分钟。

    • 热备(高可用):RPO 秒级(同步),RTO 秒~分钟,成本最高。

二、备份类型与落地手段

  • 逻辑备份:mysqldump/pg_dump;跨版本/跨平台兼容,速度较慢,适合小中数据量与“结构备份”。

  • 物理备份:XtraBackup(MySQL/InnoDB)、pg_basebackup/文件系统快照;速度快、PITR 支持友好。

  • 增量与日志:binlog/WAL/redo 日志;用于时间点恢复(PITR)。

  • 快照:LVM/ZFS/云盘/CSI 快照;一致性需“应用感知”(fsfreeze、pre-stop hooks)。

  • 存储:本地/NAS/对象存储(S3 兼容),建议启用版本化与不可变(Object Lock/WORM)。

三、数据库实战方案

3.1 MySQL(XtraBackup + Binlog PITR)

全量(每日)+ 增量(小时)+ Binlog(实时):

# 全量(停写窗或使用 --safe-slave-backup)innobackupex --user=backup --password=*** /backup/full/$(date +%F)
# 增量(基于最近一次备份)innobackupex --incremental /backup/inc/$(date +%F-%H) \  --incremental-basedir=/backup/full/2025-10-01
# 备份 binlog(建议同步到对象存储)mysqlbinlog --read-from-remote-server --raw \  --host=127.0.0.1 --user=rep --password=*** \  --stop-never mysql-bin.* -r /backup/binlog/
恢复(到指定时间点):
# 准备全量+增量innobackupex --prepare --apply-log-only /backup/full/2025-10-01innobackupex --prepare --apply-log-only /backup/full/2025-10-01 \  --incremental-dir=/backup/inc/2025-10-01-12innobackupex --copy-back /backup/full/2025-10-01
# 回放 binlog 到目标时间mysqlbinlog --stop-datetime="2025-10-01 12:34:00" /backup/binlog/mysql-bin.* | mysql -u root -p

3.2 PostgreSQL(BaseBackup + WAL)

# 基础备份pg_basebackup -h 127.0.0.1 -U repl -D /backup/base/$(date +%F) -Ft -z -P
# 开启归档(postgresql.conf)archive_mode=onarchive_command='test ! -f /backup/wal/%f && cp %p /backup/wal/%f'
恢复到时间点:设置 recovery.signal 与 restore_command,回放到 recovery_target_time

四、文件/块级与快照

  • 文件级:rsync(Linux)/robocopy(Windows)按目录策略同步。

rsync -aHAX --delete /data/  backup@nas:/backup/data/
  • LVM 快照:适合快速一致性快照(配合 fsfreeze)。

fsfreeze -f /data && lvcreate -L 10G -s -n data_snap /dev/vg0/data && fsfreeze -u /data
  • ZFS:原生快照与发送/接收(send/recv)。

zfs snapshot pool/data@$(date +%F-%H)zfs send -v pool/data@2025-10-01-12 | zfs recv backup/data

五、对象存储与不可变备份

  • S3 版本化 + 生命周期:冷热分层、自动过期;敏感数据启用 SSE-KMS。

  • 不可变(Object Lock/WORM):防勒索/误删;配合多账号/多钥匙与最小权限策略(IAM)。

  • 传输加密:TLS;端到端校验(ETag/MD5);清单与抽样还原验证。

六、灾备拓扑设计

  • 单 AZ 冷/温备:同城同机房或异机房异地;定期/准实时复制。

  • 跨 AZ 热备:同步复制,主备切换秒级;成本与复杂度高。

  • 跨 Region 异地多活:双向复制(冲突解决)、全局流量调度(DNS/GSLB)。

  • 典型分层:数据库层(主从/半同步/逻辑复制)+ 存储层(快照/复制)+ 应用层(无状态多点部署)。

七、切换与回滚演练(Runbook + 脚本)

演练基本流程:

  1. 宣布演练窗口与影响面、冻结变更;

  2. 降级读/只读模式(必要时);

  3. 触发切换(VIP/DNS/网关权重/主从角色);

  4. 验证读写、关键链路与观测;

  5. 业务侧确认;

  6. 结束演练并复盘;如异常,按回滚流程恢复。

示例:DNS 切换(权重 10% → 100%)

cli dns weight set web.example.com A 10.0.0.1 10   # DR 10%sleep 300cli dns weight set web.example.com A 10.0.0.1 100  # DR 100%
示例:Keepalived 手动漂移(演练)
systemctl stop haproxy && systemctl restart keepalived   # 触发 VIP 迁移
示例:MySQL 主从切换(简化)
# 原主只读,防双写mysql -e 'SET GLOBAL read_only=ON;'# 提升从库为主mysql -h dr -e 'RESET SLAVE ALL; SET GLOBAL read_only=OFF;'

回滚原则:

  • 切换失败立刻回滚到原路径;

  • 严格“数据新旧优先级”——避免新写入丢失;

  • 回滚脚本与切换脚本同级维护、同样频率演练。

八、Kubernetes 状态数据灾备

  • etcd 快照:控制面关键数据定期快照与异地复制。

ETCDCTL_API=3 etcdctl --endpoints=https://127.0.0.1:2379 \  --cacert=/etc/kubernetes/pki/etcd/ca.crt \  --cert=/etc/kubernetes/pki/etcd/server.crt \  --key=/etc/kubernetes/pki/etcd/server.key \  snapshot save /backup/etcd-$(date +%F).db
  • 应用数据:Velero 备份/还原命名空间级别对象与卷(CSI 快照或 Restic)。

velero backup create ns-prod --include-namespaces prod --ttl 168hvelero restore create --from-backup ns-prod
  • 跨集群演练:目标集群预建 StorageClass/IngressClass;先小范围命名空间验证。

九、监控、审计与度量

  • 备份作业状态:定时任务成功率、时长、吞吐;失败告警与重试。

  • 恢复演练:按季度覆盖“全链路还原”抽样;形成演练记录与问题整改单。

  • 指标化:RPO 实际达成、RTO 实际达成、恢复成功率、校验一致率、存储成本。

  • 审计:备份/恢复操作留痕(仓库/对象存储访问日志)与最小权限访问控制。

十、保留策略与成本优化

  • 3-2-1 原则:至少 3 份、跨 2 种介质、1 份异地/离线;关键数据 + 不可变副本。

  • 保留:日/周/月/年分层,冷归档至低频/冷存储;到期自动清理。

  • 成本:压缩与去重(重复数据删除)、分层存储、按访问频率选择存储类别。

结语

备份只是手段,能“稳定且可重复地恢复”才是目标。以明确的 RPO/RTO 为锚,结合分层备份、对象不可变与定期演练,用脚本化与可观测闭环把灾备纳入日常运维常规,才能在关键时刻“按下按钮,放心切换”。

【声明】内容源于网络
0
0
云容灾备份安全治理
分享云灾备规划、实施、运营、备份与恢复、数据安全、数据治理;窥视国内外备份软件与监控软件知识前沿水平线; 越努力,越幸运!
内容 2171
粉丝 0
云容灾备份安全治理 分享云灾备规划、实施、运营、备份与恢复、数据安全、数据治理;窥视国内外备份软件与监控软件知识前沿水平线; 越努力,越幸运!
总阅读4.7k
粉丝0
内容2.2k