跳到主要内容
版本:26.x

灾难恢复

灾难恢复 (Disaster Recovery, DR) 用于在主地域不可用时恢复业务。高可用处理同一地域内的故障,同地域备份提供历史恢复点;两者都不能替代保存在其他地域的可恢复副本。

不要假定仓库及其全部配置会自动复制到其他地域。可通过定期将所需数据导出到其他地域的对象存储,或由应用向两个地域的独立仓库写入数据,构建跨地域恢复方案。同时还需准备目标仓库、网络、安全配置和应用切换流程。

确定恢复范围​

以业务为单位,识别恢复服务所需的全部依赖:

  • 数据: 数据库、表、分区,以及业务需要的外部数据。
  • SQL 对象: 表结构、视图、物化视图、Catalog 等。仅导出数据文件不会保留全部依赖。
  • 访问配置: 数据库用户、角色、云身份,以及应用和集成所需的凭据。
  • 网络: 目标地域的白名单、私网连接、DNS 和防火墙规则。不能假定源地域的私网端点可直接复用。
  • 计算资源: 承接关键负载所需的集群规格、CPU 架构、缓存容量和扩缩容设置。
  • 应用状态: 连接配置、重试逻辑、定时任务、导入检查点,以及暂停或切换写入的流程。

记录依赖的创建顺序。例如,先准备仓库和网络,再导入数据;先创建被引用对象,再创建依赖它们的视图。不要将明文凭据保存在恢复手册中。

选择灾难恢复策略​

策略RPORTO适用情况与取舍
定期导出,故障后导入取决于恢复地域可读取的最近一次成功导出。之后的变更需重放,否则会丢失。包含故障发现、仓库创建、配置、导入、验证和流量切换。备用成本较低,适合允许一定数据丢失和较长恢复时间的业务;数据量和配置复杂度会增加恢复时间。
预先准备恢复仓库,定期导出和导入同样受最近成功导出限制。可减少资源和网络准备时间,仍需考虑导入与验证耗时。适合需要提前准备基础设施的业务;会产生持续资源和管理成本,副本不是实时更新的。
应用跨地域双写取决于投递保证、延迟、重试和数据核对。恢复仓库已有近期数据,可缩短切换前的数据准备时间。适合低 RPO、低 RTO 需求,但成本和应用复杂度较高,需处理部分写入失败、顺序差异和数据分歧。

双写不自动保证 RPO 为零。同一请求可能在一个地域成功、另一个地域失败。应明确权威数据源,使用稳定事件标识或其他去重机制,监控延迟,并准备补偿和核对流程。

将数据导出到其他地域​

将业务所需的数据库和表导出到主地域故障后仍可访问的对象存储。外部数据也需要另行准备跨地域副本或可用访问路径。

通过数据导出选择 EXPORT 或 SELECT INTO OUTFILE 等方式。目标格式应保留恢复所需的数据类型与精度,表结构和其他 SQL 对象应另行保存并管理版本。

每个导出周期应完成以下操作:

  1. 将数据写入带版本或不会被覆盖的目标路径。
  2. 确认导出任务完成,且预期文件已生成。
  3. 记录恢复点、对象清单、结构版本和恢复写入所需的检查点。
  4. 验证恢复地域的凭据和网络策略可以读取文件。
  5. 保留足够的历史导出,避免最新副本不完整或包含业务错误时无可用恢复点。

导出间隔不等于实际 RPO。长时间运行或失败的导出会使最新可用恢复点变旧,因此应监控完成状态和恢复点距当前的时间。

准备恢复地域​

如果 RTO 不允许故障后再准备资源,应提前完成以下工作:

  1. 确认 SelectDB Cloud 在目标地域可用,且支持业务所需能力。
  2. 创建恢复仓库,或记录可重复执行的创建流程,为关键负载准备足够计算资源。
  3. 配置目标地域的连接方式和网络设置。
  4. 准备数据库用户、角色、Catalog 及其他必要配置,并通过安全方式管理凭据。
  5. 验证跨地域对象存储及其加密密钥可访问。
  6. 准备可以切换到恢复仓库的应用连接配置或服务发现机制。

表结构、权限、集成、网络或仓库规格变化后,应同步检查恢复地域,避免配置逐渐偏离。

在地域故障后恢复​

  1. 确认故障并确定最近可用恢复点。
  2. 尽可能停止主地域写入。采用双写时,先明确接收新写入的权威地域。
  3. 创建或启动恢复仓库,应用网络、权限、表结构和集成配置。
  4. 导入已导出的数据,可用方式参见数据导入。
  5. 验证行数、数据新鲜度、关键查询、权限和应用依赖。
  6. 将应用流量和数据导入链路切换到恢复仓库,监控错误、延迟及写入进度。
  7. 记录实际恢复点与恢复时间,以及需要重放或核对的数据范围。
避免未经协调的双地域写入

如果应用没有明确的冲突处理流程,不要在非计划恢复中同时向两个地域写入。独立写入可能在后续合并时产生重复、缺失或不一致数据。

演练与维护​

使用独立恢复仓库和接近生产规模的数据进行演练,预估额外计算及存储费用,演练后清理临时资源。成功导出不代表可以在 RTO 内导入,也不代表应用能正常运行。

  • 分别测量资源准备、配置、导入、验证和流量切换时间。
  • 验证预期恢复点的数据完整性,以及关键查询和写入路径。
  • 确认目标地域容量、凭据、密钥和私网连接可用。
  • 将回切作为独立流程演练,先确定如何把恢复地域的新写入同步回原地域,再切换流量。
  • 在配置变化、故障和演练后更新恢复手册。

保护措施的组合与 RPO、RTO 定义参见可靠性。

相关文档​

  • 数据导出:选择导出方式并准备异地数据副本。
  • 数据导入:将导出数据导入恢复仓库。
  • 高可用:了解同地域内的故障保护。
  • 可靠性:制定 RPO、RTO 并组合保护措施。