灾难恢复
灾难恢复 (Disaster Recovery, DR) 用于在主地域不可用时恢复业务。高可用处理同一地域内的故障,同地域备份提供历史恢复点;两者都不能替代保存在其他地域的可恢复副本。
不要假定仓库及其全部配置会自动复制到其他地域。可通过定期将所需数据导出到其他地域的对象存储,或由应用向两个地域的独立仓库写入数据,构建跨地域恢复方案。同时还需准备目标仓库、网络、安全配置和应用切换流程。
确定恢复范围
以业务为单位,识别恢复服务所需的全部依赖:
- 数据: 数据库、表、分区,以及业务需要的外部数据。
- SQL 对象: 表结构、视图、物化视图、Catalog 等。仅导出数据文件不会保留全部依赖。
- 访问配置: 数据库用户、角色、云身份,以及应用和集成所需的凭据。
- 网络: 目标地域的白名单、私网连接、DNS 和防火墙规则。不能假定源地域的私网端点可直接复用。
- 计算资源: 承接关键负载所需的集群规格、CPU 架构、缓存容量和扩缩容设置。
- 应用状态: 连接配置、重试逻辑、定时任务、导入检查点,以及暂停或切换写入的流程。
记录依赖的创建顺序。例如,先准备仓库和网络,再导入数据;先创建被引用对象,再创建依赖它们的视图。不要将明文凭据保存在恢复手册中。
选择灾难恢复策略
| 策略 | RPO | RTO | 适用情况与取舍 |
|---|---|---|---|
| 定期导出,故障后导入 | 取决于恢复地域可读取的最近一次成功导出。之后的变更需重放,否则会丢失。 | 包含故障发现、仓库创建、配置、导入、验证和流量切换。 | 备用成本较低,适合允许一定数据丢失和较长恢复时间的业务;数据量和配置复杂度会增加恢复时间。 |
| 预先准备恢复仓库,定期导出和导入 | 同样受最近成功导出限制。 | 可减少资源和网络准备时间,仍需考虑导入与验证耗时。 | 适合需要提前准备基础设施的业务;会产生持续资源和管理成本,副本不是实时更新的。 |
| 应用跨地域双写 | 取决于投递保证、延迟、重试和数据核对。 | 恢复仓库已有近期数据,可缩短切换前的数据准备时间。 | 适合低 RPO、低 RTO 需求,但成本和应用复杂度较高,需处理部分写入失败、顺序差异和数据分歧。 |
双写不自动保证 RPO 为零。同一请求可能在一个地域成功、另一个地域失败。应明确权威数据源,使用稳定事件标识或其他去重机制,监控延迟,并准备补偿和核对流程。
将数据导出到其他地域
将业务所需的数据库和表导出到主地域故障后仍可访问的对象存储。外部数据也需要另行准备跨地域副本或可用访问路径。
通过数据导出选择 EXPORT 或 SELECT INTO OUTFILE 等方式。目标格式应保留恢复所需的数据类型与精度,表结构和其他 SQL 对象应另行保存并管理版本。
每个导出周期应完成以下操作:
- 将数据写入带版本或不会被覆盖的目标路径。
- 确认导出任务完成,且预期文件已生成。
- 记录恢复点、对象清单、结构版本和恢复写入所需的检查点。
- 验证恢复地域的凭据和网络策略可以读取文件。
- 保留足够的历史导出,避免最新副本不完整或包含业务错误时无可用恢复点。
导出间隔不等于实际 RPO。长时间运行或失败的导出会使最新可用恢复点变旧,因此应监控完成状态和恢复点距当前的时间。
准备恢复地域
如果 RTO 不允许故障后再准备资源,应提前完成以下工作:
- 确认 SelectDB Cloud 在目标地域可用,且支持业务所需能力。
- 创建恢复仓库,或记录可重复执行的创建流程,为关键负载准备足够计算资源。
- 配置目标地域的连接方式和网络设置。
- 准备数据库用户、角色、Catalog 及其他必要配置,并通过安全方式管理凭据。
- 验证跨地域对象存储及其加密密钥可访问。
- 准备可以切换到恢复仓库的应用连接配置或服务发现机制。
表结构、权限、集成、网络或仓库规格变化后,应同步检查恢复地域,避免配置逐渐偏离。
在地域故障后恢复
- 确认故障并确定最近可用恢复点。
- 尽可能停止主地域写入。采用双写时,先明确接收新写入的权威地域。
- 创建或启动恢复仓库,应用网络、权限、表结构和集成配置。
- 导入已导出的数据,可用方式参见数据导入。
- 验证行数、数据新鲜度、关键查询、权限和应用依赖。
- 将应用流量和数据导入链路切换到恢复仓库,监控错误、延迟及写入进度。
- 记录实际恢复点与恢复时间,以及需要重放或核对的数据范围。
如果应用没有明确的冲突处理流程,不要在非计划恢复中同时向两个地域写入。独立写入可能在后续合并时产生重复、缺失或不一致数据。
演练与维护
使用独立恢复仓库和接近生产规模的数据进行演练,预估额外计算及存储费用,演练后清理临时资源。成功导出不代表可以在 RTO 内导入,也不代表应用能正常运行。
- 分别测量资源准备、配置、导入、验证和流量切换时间。
- 验证预期恢复点的数据完整性,以及关键查询和写入路径。
- 确认目标地域容量、凭据、密钥和私网连接可用。
- 将回切作为独立流程演练,先确定如何把恢复地域的新写入同步回原地域,再切换流量。
- 在配置变化、故障和演练后更新恢复手册。
保护措施的组合与 RPO、RTO 定义参见可靠性。