可靠性
可靠性是业务在故障发生后继续提供服务、保护数据,并在约定时间内恢复的能力。在 SelectDB Cloud 中,平台与用户共同承担可靠性责任:平台提供托管基础设施以及高可用、备份和恢复机制;你需要配置仓库与集群、备份计划、应用连接和恢复流程。
为生产业务设计可靠性方案时,建议按以下顺序进行:
- 明确业务影响。 确定关键查询和写入、可接受的中断时间,以及能够重新生成的数据量,据此制定恢复时间目标 (Recovery Time Objective, RTO) 和恢复点目标 (Recovery Point Objective, RPO)。
- 区分故障范围。 集群故障、可用区故障、错误写入和整个地域不可用需要不同的保护措施。同地域备份不能作为地域级故障的唯一保护。
- 消除单点。 如果业务不能等待人工重建集群,可在符合条件的多可用区仓库中,将不同可用区的两个物理集群组成主备虚拟集群。
- 让恢复流程可重复执行。 记录故障确认人、应用连接切换方式、目标仓库、待恢复数据及验证方法。通过演练测量恢复时间。
- 持续监控与改进。 关注仓库和集群状态、查询失败、备份与导出任务状态,以及最新可用恢复点距当前的时间,根据故障和演练结果调整方案。
RPO 与 RTO
RPO 表示业务可接受的最大数据丢失时间范围。例如,RPO 为 1 小时,意味着业务最多可以接受丢失最近 1 小时的写入。对于备份,实际恢复点取决于最近一次成功完成的备份,而非计划开始执行的时间。
RTO 表示从故障发生到恢复服务的最长可接受时间。它包括故障发现、资源准备、数据恢复或导入、结果验证和应用流量切换。导入和恢复耗时通常随数据量增加而增长。
选择保护措施
不同措施覆盖不同的故障范围,需要组合使用。
| 故障范围 | 保护措施 | 恢复方式与取舍 |
|---|---|---|
| 同一地域内的集群或可用区故障 | 高可用 | 单集群需要人工准备替代集群;主备虚拟集群可在检测到故障后自动切换。切换期间的请求仍可能失败,应用需要重连和重试。 |
| 误删、错误写入或高风险操作失败 | 回收站或备份与恢复 | 回收站可恢复尚未清理的已删除对象;备份提供保留的恢复点。备份的 RPO 取决于最近成功备份,恢复时间取决于数据量、备份方式和计算资源。 |
| 整个地域不可用 | 灾难恢复 | 将可恢复的数据副本保存在其他地域,故障后准备目标仓库、导入数据并切换应用。也可采用应用双写,但需承担额外成本和一致性处理。 |
高可用
多可用区部署面向同一地域内的故障。创建仓库时,应确认所选地域及部署方式支持多可用区,并为冗余计算资源选择不同可用区。
- 如果可以接受人工恢复,使用单个计算集群,在故障后新建替代集群,并预留启动和缓存预热时间。
- 如果需要自动故障转移,使用不同可用区中的两个物理集群组成主备虚拟集群。平台会同步缓存数据,但检测故障和切换仍需要时间。
回收站
对于仍在回收站中的数据库、表或分区,可以使用 RECOVER 尝试恢复。回收站条目可能因过期或资源回收而被清理,不应作为必须保留的恢复点。需要确定的恢复点时,应配置备份。
备份
备份可按周期执行,也可在高风险操作前执行一次。你可以从仍保留的成功备份中恢复数据。根据恢复粒度、耗时和功能开通情况,选择导出备份或轻量级快照备份,详见备份与恢复。
灾难恢复
多可用区部署和同地域备份无法替代跨地域副本。可以定期将业务数据导出到其他地域的对象存储,在故障后导入恢复仓库。若导入耗时无法满足 RTO,可由应用向两个地域的仓库写入数据,并为部分写入失败、重试、去重和数据核对制定规则。
上线与变更前的准备
| 检查项 | 需要确认的内容 |
|---|---|
| 业务范围 | 已记录关键查询、写入链路、外部依赖和恢复负责人。 |
| 容量 | 备用集群或恢复仓库能够承接关键负载,目标地域支持所需能力。 |
| 数据保护 | 备份和跨地域导出已成功完成,最新可用恢复点满足 RPO。 |
| 连接 | 应用能够连接目标仓库,已验证重连、重试和连接切换。 |
| 监控 | 使用监控指标和告警中心关注资源健康、失败任务及查询异常。 |
| 演练 | 已测量故障发现、资源准备、缓存预热、数据恢复和流量切换时间。 |
定期使用接近生产规模的数据演练。业务数据量、网络、权限、集群规格或应用连接方式发生变化后,应更新恢复手册并重新验证。