本页介绍 ClickHouse Cloud 的灾难恢复建议,以及客户在发生中断后进行恢复的指导。
ClickHouse Cloud 目前不支持自动故障转移,也不支持跨多个地理区域的自动同步。
客户应定期执行 Backup 恢复测试,以了解其服务规模和配置对应的具体 RTO。
先了解几个定义会更有帮助。
RPO (恢复点目标) :发生中断性事件后,以时间衡量的可接受最大数据丢失范围。示例:RPO 为 30 分钟,表示一旦发生故障,DB 应能够恢复到距离故障发生不超过 30 分钟的数据状态。当然,这也取决于备份的频率。
RTO (恢复时间目标) :发生中断后,恢复正常运行所允许的最长停机时间。示例:RTO 为 30 分钟,表示一旦发生故障,团队能够在 30 分钟内恢复数据和应用,并让业务恢复正常运行。
数据库备份与快照:备份通过保存一份独立的数据副本来提供持久的长期存储。快照不会创建额外的数据副本,通常速度更快,并且可以实现更好的 RPO。
为主服务保留 Backup,是在主服务发生停机时利用 Backup进行恢复的有效方式。
ClickHouse Cloud 支持以下 Backup能力。
- 默认 Backup
默认情况下,ClickHouse Cloud 每 24 小时为您的服务创建一次 Backup。
这些 Backup与服务位于同一区域,并存储在 ClickHouse CSP (云服务提供商) 的 storage bucket 中。
如果主服务中的数据损坏,可以使用 Backup将数据恢复到一个新服务。
- 外部 Backup (在客户自己的 storage bucket 中)
您可以将Backup导出到您账户中的对象存储中,可以位于同一区域,也可以位于其他区域。
跨云 Backup导出支持即将推出。
跨区域和跨云 Backup将收取相应的数据传输费用。
- 可配置 Backup
客户可以配置Backup,以更高频率执行Backup,最高可达每 6 小时一次,从而改善 RPO。
客户还可以配置更长的保留期。
该服务当前可用的 Backup会列在 ClickHouse Cloud 控制台的“backups”页面上。
此部分还会显示每个 Backup的成功/失败状态。
- 位于 ClickHouse Cloud 存储桶中的默认Backup可恢复到同一区域中的新服务。
- 外部Backup (位于客户对象存储中) 可恢复到同一区域或不同区域中的新服务。
Backup和恢复所需的时间取决于多种因素,例如数据库大小、schema,以及数据库中的表数量。
根据我们的测试,较小的Backup (约 1 TB) 可能需要 10–15 分钟甚至更长时间。
小于 20 TB 的Backup通常可在 1 小时内完成,而备份约 50 TB 的数据预计需要 2–3 小时。
随着规模增大,Backup会体现出规模效应;我们还观察到,一些内部服务中高达 1 PB 的Backup可在 10 小时内完成。
我们建议使用你自己的数据库或样本数据进行测试,以获得更准确的估算,因为实际耗时取决于上述多种因素。
对于相近的数据规模,恢复耗时与Backup耗时大致相当。
如上所述,我们建议使用你自己的数据库进行测试,以大致了解恢复Backup需要多长时间。
当前不支持在两个 ClickHouse Cloud 实例之间进行自动故障转移,无论它们位于同一区域还是不同区域。
当前也不支持在同一区域或不同区域的不同 ClickHouse Cloud 服务之间自动同步数据,即 Active-Active 复制。
本节介绍各种恢复选项,以及每种情况下可采用的恢复流程。
在这种情况下,数据可以从备份恢复到同一区域中的另一项服务。
如果使用默认备份策略,备份的数据最多可能滞后 24 小时;如果使用频率为 6 小时的可配置备份,则最多可能滞后 6 小时。
从现有备份中恢复:
- 前往 ClickHouse Cloud 控制台的“Backups”部分。
- 在要恢复的目标备份对应的“Actions”下,点击三点菜单。
- 为新服务指定名称,然后从该备份中恢复
您可以将备份导出到您自己的云提供商存储桶。
如果您担心区域性故障,我们建议将备份导出到其他区域。
请注意,这将产生跨区域数据传输费用。
如果主区域发生故障,位于其他区域的备份可以恢复到其他区域中的新服务。
将备份恢复到另一个服务后,您需要确保更新所有 DNS、负载均衡器或连接字符串配置,使其指向新服务。
这可能包括:
- 更新环境变量或 secrets
- 重启应用服务以建立新的连接
还有一些可进一步考虑的选项。
- 向不同集群双写
在此方案中,您可以在不同区域部署 2 个独立集群,并同时向两者写入数据。
该方案的成本天然更高,因为需要运行多个服务,但如果某个区域不可用,也能提供更高的可用性。
- 利用 CSP 复制
在此方案中,您可以利用云服务提供商的原生对象存储复制功能来复制数据。
例如,使用 BYOB 时,您可以将备份导出到您在主区域拥有的存储桶中,再通过 AWS 跨区域复制 将其复制到另一个区域。