Datastore 模式 Firestore 时间点恢复 (PITR) 可防范意外删除或写入。PITR 会维护基于过去时间戳的实体版本。例如,如果开发者推送的数据不正确、意外删除或写入,PITR 可以将数据无缝恢复到过去的某个时间点(最长 7 天)。
对于任何遵循最佳实践的实时数据库,使用 PITR 不会影响读取或写入的性能。
PITR 窗口
启用 PITR 后,Datastore 模式会开始保留 PITR 数据。PITR 数据在 PITR 窗口中保留 7 天。
您可以根据 PITR 的启用时间读取时间戳的数据:
PITR 启用状态 | 可用的最早 PITR 数据 | |
---|---|---|
已停用 | 读取请求前 1 小时 | |
将在 7 天内启用 | 启用 PITR 前 1 小时 | |
启用已超过 7 天 | 读取请求前 7 天 |
在 PITR 窗口中,系统会每分钟保留一个版本。您可以使用整分钟时间戳以分钟粒度读取文档。如果进行多次写入,则仅保留文档的一个版本。例如,如果文档在 2023-05-30 09:00:00AM
(不含)和 2023-05-30 09:01:00AM
(含)时间戳之间有多次写入,范围为 v1, v2, ... vk
,则时间戳 2023-05-30 09:01:00AM
的读取请求将返回文档的 vk
版本。
您可以从在 PITR 窗口期创建的数据中读取。这些数据以分钟粒度进行存储,您可以以相同的粒度恢复数据。Datastore 模式 PITR 功能默认处于停用状态。
数据库的 earliestVersionTime 字段指定允许的最早数据读取时间。
无论是否启用了 PITR,您都可以在过去一小时内以任何微秒精度时间戳读取(但不能导出)文档,但不能在 earliestVersionTime 之前读取。
恢复数据的方法
您可以通过以下两种方式恢复数据:
如需恢复数据库的一部分,请执行指定查询条件或使用直接键查找以及过去的时间戳的过时读取,然后将结果写回实时数据库。这通常用于对实时数据库进行的手术操作。例如,如果您不小心删除了特定实体或错误地更新了数据子集,可以使用此方法进行恢复。 如需查看相关说明,请参阅恢复数据库的一部分。
如需恢复整个数据库,请通过指定过去时间戳来导出数据库,然后将其导入新数据库。PITR 导出操作支持所有过滤条件,包括导出所有实体以及导出特定种类或命名空间。请注意,导出数据库可能需要几个小时。您可以导出 PITR 数据,其中时间戳是过去七天内的整分钟时间戳,但不早于最早版本时间。
价格
在为数据库启用 PITR 之前,请考虑以下价格信息:
存储:Datastore 模式每天测量数据库大小。在一个月内,系统会计算这些样本点的平均值,以计算数据库存储空间大小。此平均值乘以 PITR(GB-月)的单价。如需了解详情,请参阅存储价格。
PITR 存储没有免费层级。如果您要使用 PITR,则必须启用结算功能。
计算结算费用:您在 7 天的 PITR 期间内进行的任何查询(无论是通过过时读取还是导出)都会根据读取的文档数量产生读取操作费用。如需了解详情,请参阅pricing。
最低结算:即使您在启用 PITR 后的一天内停用 PITR,系统仍可能会向您收取最多 1 天的 PITR 存储费用。
后续步骤
- 详细了解如何使用 PITR 恢复数据。