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