1. 演练准备与目标定义
- 明确RTO(恢复时间目标)与RPO(恢复点目标),如RTO=30分钟、RPO=5分钟。
- 列出演练范围:应用、数据库、文件存储、证书和外部依赖(DNS、第三方API)。
- 指定演练负责人、团队成员与联系方式,准备回滚计划与沟通模板(邮件/群组/电话)。
2. 菲律宾灾备站点选型与网络准备
- 选择云厂商或机房:AWS ap-southeast-1 / GCP asia-southeast1 / 本地机房(注意延迟与带宽)。
- 购买公网IP、配置VPC、子网、安全组和必要的弹性IP,预留带宽用于同步。
- 测试公网连通:使用ping/traceroute与iperf3测带宽与丢包。
3. 数据库容灾配置(MySQL示例)
- 主库开启binlog并设置server-id,配置gtid_mode=ON(若使用GTID)。
- 在灾备库执行CHANGE MASTER TO MASTER_HOST='主IP', MASTER_USER='repl', MASTER_PASSWORD='pwd', MASTER_AUTO_POSITION=1; START SLAVE; 验证SHOW SLAVE STATUS。\n
- 如使用物理备份可用Percona XtraBackup:xtrabackup --backup --target-dir=/data/backup && xtrabackup --prepare ...,恢复到灾备并启动replication。
4. 文件与对象存储同步
- 若使用NFS/共享盘,采用rsync增量同步:rsync -avz --delete /data/ user@ph:/data/,通过cron或inotify实现近实时同步。
- S3兼容对象存储可用工具s3cmd或rclone:rclone sync s3://prod-bucket s3://dr-bucket --transfers=10。
- 验证文件完整性(md5sum或对象etag比对)。
5. 配置与证书同步
- 将配置文件(/etc/nginx, /etc/app)用git或配置管理工具(Ansible)管理:ansible-playbook deploy.yml --limit=ph。
- TLS证书通过acme或Vault同步,确保私钥安全传输并设权限600。
- 测试Nginx/应用启动:systemctl restart nginx && nginx -t。
6. DNS与流量切换方案
- 使用DNS故障转移:在DNS提供商(Cloudflare/Route53)设置健康检查与主备记录;或采用低TTL(60s)以便快速切换。
- 可用公网负载均衡器(ALB/HAProxy)+ Anycast/BGP做更高级切换。
- 演练时先小流量验证,使用灰度DNS或按IP段逐步切换避免全量故障。
7. 自动化切换Runbook(示例步骤)
- 步骤1:通知团队并冻结配置变更。
- 步骤2:停止主站写入(开启只读或维护页),确定binlog位置并记录GTID。
- 步骤3:在灾备提升为主(停止slave, reset master, 修改应用DB连接),更新读写开关。
- 步骤4:更新DNS指向灾备IP并监控流量与错误率,若异常回滚并报告。
8. 恢复时间(RTO)与恢复点(RPO)验证方法
- RTO验证:从演练开始计时,按Runbook逐步记录每步耗时(截图/日志)。完成应用可用即为RTO实际值。
- RPO验证:在切换前记录最后可用binlog位置或快照时间,切换后比较灾备实际数据时间点,计算数据丢失量(事务或时间)。
- 建议至少3次不同场景(高负载、低负载、网络中断)下取平均值。
9. 健康检查与自动回滚策略
- 部署SLA监控:HTTP探针、数据库连接探针、队列长度报警;结合Prometheus+Alertmanager。
- 若探针在指定时间内失败(如5分钟内错误率>5%),触发自动回滚脚本或人工介入。
- 回滚前保留快照并保存日志以便事后分析。
10. 日志与演练复盘
- 演练完成后导出关键日志(应用、数据库、网络、DNS变更)并与时间线对齐。
- 编写复盘报告:成功点、失败点、耗时、改进项(网络带宽、脚本优化、权限问题)。
- 将改进纳入下一次演练计划并更新Runbook。
11. 问:如何在不影响生产的情况下做菲律宾站点切换测试?
- 答:可用灰度流量或镜像环境;先在低峰期用10%-20%流量做A/B测试,通过DNS权重或负载均衡器分流,验证功能与性能,再全量切换。
12. 问:如何保证数据库切换时数据不丢失?
- 答:采用同步复制或半同步复制,记录切换时的GTID/binlog位置;切换前让主库flush tables with read lock并确认binlog位置,灾备至少落后小于RPO设定。
13. 问:演练后常见的改进项有哪些?
- 答:常见改进包括降低TTL、完善监控告警、优化同步带宽、自动化Runbook脚本、加强权限与证书管理,以及定期演练并记录耗时指标。
来源:容灾演练菲律宾服务器攻略 灾备站点搭建与恢复时间验证方法