1.
总体策略与目标(RPO/RTO)
子项1:设定目标:明确恢复点目标(RPO)与恢复时间目标(RTO),例如RPO=1小时,RTO=30分钟。
子项2:分级数据:将数据分为静态对象、数据库和配置三类,分别制定快照、日志与配置管理策略。
子项3:权限与合规:制定加密(at-rest & in-transit)与访问控制清单,确保菲律宾数据主权要求。
2.
环境准备与工具清单
子项1:工具:ssh、rsync、tar、mysqldump/pg_dump、wal-e/wal-g、aws-cli或rclone、crontab/systemd、cloud-init脚本。
子项2:存储目标:在菲律宾或邻近区域准备对象存储(S3兼容)与异地备份账户。
子项3:权限:为备份账户创建最小权限IAM/Access Key,并启用多因素与审计日志。
3.
文件级备份:快照与rsync实操
子项1:定期块存储快照(示例):使用云控制台或API每小时创建卷快照,保留策略7天。
子项2:rsync增量备份命令(示例):rsync -azP --delete /var/www/ user@backup:/data/www/,放入脚本并用cron每30分钟执行。
子项3:校验:备份后运行sha256sum生成校验文件并推送至对象存储以便完整性校验。
4.
MySQL数据库备份与恢复(实操步骤)
子项1:逻辑备份:mysqldump --single-transaction --master-data=2 -u root -p mydb > /backup/mydb_$(date +%F_%H%M).sql。
子项2:二进制日志:开启binlog并将binlog推送到异地(使用mysqlbinlog或第三方工具定期抓取)。
子项3:恢复流程:创建新服务器,安装MySQL,scp .sql回服务器,mysql -u root -p < mydb.sql,应用binlog:mysqlbinlog binlog.* | mysql -u root -p。
5.
PostgreSQL备份(WAL流与基线)
子项1:基线备份:pg_basebackup -D /backup/base -Fp -Xs -P -U replicator。
子项2:WAL归档:在postgresql.conf配置archive_mode=on,archive_command='test ! -f /archive/%f && cp %p /archive/%f',并将/archive同步到对象存储。
子项3:恢复:还原基线,放置必要的WAL文件并使用 recovery.conf 执行时间点恢复(PITR)。
6.
把备份自动化:脚本与调度
子项1:脚本模板:将快照、db备份、rsync、校验步骤写成可重入bash脚本,输出日志到/var/log/backup/。
子项2:定时任务:使用crontab或systemd timer,例如每小时触发脚本并在失败时邮件/钉钉告警。
子项3:告警与重试:脚本返回非零时按指数退避重试3次,并调用监控API上报事件。
7.
异地复制与冷/热灾备
子项1:热备方案:在第二个可用区或区域维持只读副本(数据库主从复制),同步对象存储。
子项2:冷备方案:定期将快照导出到离线存储或另一区域,恢复时执行卷挂载并启动实例。
子项3:DNS与流量切换:准备低TTL的DNS记录或使用负载均衡器实现切换,切换步骤写入Runbook。
8.
故障恢复实操演练步骤(Runbook)
子项1:发现与分级:检测到故障,判定影响范围,记录时间点并通知SRE团队。
子项2:恢复主机:如果实例不可用,使用最近快照创建新卷并attach到新实例,挂载并启动服务(示例命令:mount /dev/vdb1 /var/www && systemctl start nginx)。
子项3:数据库恢复:按第4/5节步骤恢复数据库,运行完整性检查(应用层校验、行数比对、关键事务验证),最后切换DNS并回归监控。
9.
验证与演练频率、审计
子项1:验证:每月进行一次全流程恢复演练,从备份拉出并在隔离网络中验证服务。
子项2:保留策略:根据法规和成本设定保留周期(例如快照保留30天,月度备份保留12个月)。
子项3:审计与报告:每次备份日志入库并生成周报,保留操作审计以便事后追踪。
10.
问:如果菲律宾机房网络完全中断,如何保证能恢复数据?
子项1:在菲律宾机房网络中断时,事先配置的异地备份(S3兼容对象存储在其他区域或本地备份站点)可用于恢复。
子项2:需确保binlog/WAL等增量日志被推送到异地,且有明确的恢复优先级与手动切换DNS或IP的流程。
11.
答:实施步骤与优先级是什么?
子项1:优先取回最近的完整快照并在可用区域启动实例;其次恢复数据库到快照时间点并应用增量日志;最后将文件层rsync回最新状态并进行一致性检查。
子项2:步骤要严格按照Runbook执行并在恢复完成后做完整回归测试,确认应用、证书、监控和告警全部恢复。
12.
问:如何定期验证备份有效性,避免“备份存在但无法恢复”的情况?
子项1:建议每月做一次完整恢复演练(隔离环境),并每周做随机单点恢复测试(恢复一个表或一个目录)。
子项2:自动化校验:备份脚本完成后运行校验脚本对比文件校验和、对比行数以及执行应用级健康检查,失败即告警并生成问题单。