用于具有连续备份模式的 Azure Cosmos DB 帐户的最新可还原时间戳

适用对象: NoSQL MongoDB Gremlin

Azure Cosmos DB 提供了一个 API,用于获取容器的最新可还原时间戳。 此 API 可用于启用了连续备份模式的帐户。 最新可还原时间戳表示数据已成功备份到的最新时间戳(UTC 格式)。 使用此 API,可以获取可还原时间戳来触发实时帐户还原或监视是否按时对数据进行了备份。

此 API 还会将帐户位置用作输入参数,并返回此位置中给定容器的最新可还原时间戳。 如果帐户存在于多个位置,则不同位置中容器的最新可还原时间戳可能会有所不同,因为每个位置中的备份都是独立进行的。

默认情况下,该 API 只会在容器级别运行,但可轻松将其扩展,以便在数据库或帐户级别运行。 本文可帮助你理解 api 的语义、其计算方式以及用例。 若要了解详细信息,请参阅如何获取 API for NoSQL、API for MongoDB、API for Table 和 API for Gremlin 帐户的最新还原时间戳

用例

可以在以下用例中使用最新可还原时间戳:

  • 可以获取容器、数据库或帐户的最新可还原时间戳,并使用它来触发还原。 该时间戳代表指定资源或其所有底层资源的数据已成功备份。

  • 在删除帐户之前,可以使用此 API 来确定数据是否已成功备份。 如果此 API 返回的时间戳小于上次写入时间戳,则表示某些数据尚未备份。 在这种情况下,必须调用此 API,直到时间戳等于或大于上次写入时间戳。 如果某个帐户存在于多个位置,则在删除该帐户之前,必须先获取所有位置的最新可还原时间戳,以确保所有区域中的数据均已备份。

  • 可以使用此 API 来监视是否按时对数据进行了备份。 此时间戳通常与当前时间戳相差几百秒,尽管有时候差距可能更大。

语义

容器的最新可还原时间戳是对某个位置中的所有分区进行备份的最小时间戳。 此 API 通过检索某个位置中容器的每个分区的最新备份时间戳来计算最新可还原时间戳,并返回所有这些时间戳的最小值。 如果所有分区的数据已备份,并且未将新数据写入这些分区,则此 API 将返回当前时间戳和上次数据备份时间戳的最大值。

如果分区尚未进行任何备份,但其中有一些需要备份的数据,则它将返回最小 Unix (epoch) 时间戳,即 1970 年 1 月 1 日午夜 UTC(协调世界时)。 在这种情况下,用户必须重试,直到它提供大于 epoch 时间戳的时间戳。

最新可还原时间戳计算

以下示例描述了最新可还原时间戳 API 在不同场景中的预期结果。 在每种情况下,我们将讨论分区的当前日志备份状态、挂起的待备份数据,以及它如何影响容器的总体最新可还原时间戳计算。

假设有一个帐户存在于两个区域(中国东部和中国北部)。 我们有一个容器“cont1”,它具有两个分区(Partition1 和 Partition2)。 如果我们在时间戳为“t3”时发送获取此容器的最新可还原时间戳的请求,则将按以下方式计算此容器的总体最新可还原时间戳:

案例 1:所有分区的数据均尚未备份

中国东部区域:

  • 分区 1:上次备份时间 = t2,但在 t2 之后,有更多的数据需要备份。
  • 分区 2:上次备份时间 = t3,并且已备份其所有数据。
  • 最新可还原时间戳 = min (t2, t3) = t2

中国北部区域:

  • 分区 1:上次备份时间 = t1,但在 t1 之后,有更多的数据需要备份。
  • 分区 2:上次备份时间 = t2,但在 t2 之后,有更多的数据需要备份。
  • 最新可还原时间戳 = min (t1, t2) = t1
案例 2:所有分区的数据均已备份

中国东部区域:

  • 分区 1:上次备份时间 = t2,并且已备份其所有数据。
  • 分区 2:上次备份时间 = t3,并且已备份其所有数据。
  • 最新可还原时间戳 = max (当前时间戳, t2, t3)

中国北部区域:

  • 分区 1:上次备份时间 = t3,并且已备份其所有数据。
  • 分区 2:上次备份时间 = t3,并且已备份其所有数据。
  • 最新可还原时间戳 = max (当前时间戳, t3, t3)
案例 3:一个或多个分区尚未进行任何备份

中国东部区域:

  • 分区 1:尚未对此分区进行任何日志备份。
  • 分区 2:上次备份时间 = t3
  • 最新可还原时间戳 = 1970/1/1 凌晨 12:00:00

常见问题解答

是否可以将此 API 用于定期备份的帐户?

否。 此 API 仅可用于具有连续备份模式的帐户。

是否可以将此 API 用于迁移到连续模式的帐户?

是的。 此 API 可用于预配了连续备份模式的帐户,也可以用于成功迁移到连续备份模式的帐户。

最新写入时间戳和最新可还原时间戳之间的典型延迟是什么?

日志备份数据每 100 秒备份一次。 但在某些特殊情况下,备份可能会延迟超过 100 秒。

可还原时间戳是否适用于已删除的资源?

否。 可还原时间戳仅适用于实时资源(数据库、集合或帐户)。 你可以获取可还原时间戳来触发实时帐户还原或监视是否按时对数据进行了备份。

后续步骤