使用连续备份还原同一帐户中已删除的数据库或容器

适用对象: NoSQL MongoDB Gremlin

通过 Azure Cosmos DB 中连续备份的同一帐户还原功能,可以在同一现有帐户中还原已删除的数据库或容器。 可以使用 Azure 门户Azure CLIAzure PowerShell 执行此还原操作。 此功能有助于恢复意外删除数据库或容器中的数据。

还原哪些内容?

可以选择还原已删除的预配吞吐量容器或共享吞吐量数据库的任意组合。 还原操作开始后,帐户所在的所有区域中的指定数据库或容器均可还原。 还原的持续时间取决于所需还原的数据量以及帐户所在的区域。 由于必须先有父数据库,然后才能还原容器,因此必须先执行数据库还原,然后再还原子容器。

有关连续备份还原以及不还原内容的详细信息,请参阅连续备份简介

注意

在同一帐户中还原已删除的数据库或容器时,应将这些资源视为新资源。 客户端应用程序使用的现有会话令牌或延续令牌将变为无效。 建议先刷新本地存储的会话令牌和延续令牌,然后再对新还原的资源执行进一步读取或写入操作。 此外,建议重启 SDK 客户端以自动刷新存储在 SDK 缓存中的会话令牌和延续令牌。

如果应用程序侦听还原的数据库或容器上的更改源事件,应在还原操作后从头开始重启更改源。 已还原的资源将只包含从还原后资源生存期开始的更改源事件。 删除资源之前的所有更改源事件都不会传播到更改源。 还建议在还原操作后重启查询操作。 现有查询操作可能已生成延续令牌,这些令牌在还原操作后变为无效。

权限

可以将连续备份帐户还原的权限限定给特定角色或主体。 有关权限以及如何分配权限的详细信息,请参阅连续备份和还原权限

了解容器实例标识符

在同一帐户中还原已删除的容器时,还原的容器的名称和 resourceId 值与先前删除的原始容器相同。 若要轻松区分容器的不同版本,请使用 CollectionInstanceId 字段。 CollectionInstanceId 字段可以区分容器的不同版本。 这些版本同时包括已删除的原始容器和新还原的容器。 该实例标识符作为还原参数的一部分存储在已还原容器的资源定义中。 相反,原始容器没有在容器的资源定义中定义的还原参数。 容器的每个后续还原实例都有一个唯一的实例标识符。

下面是一个示例:

实例 实例标识符
原始容器 未定义
容器的首次还原 11111111-1111-1111-1111-111111111111
容器的二次还原 22222222-2222-2222-2222-222222222222

帐户内还原方案

用于还原到同一帐户中某个时间点的 Azure Cosmos DB 功能有助于从数据库或容器的意外删除恢复。 此功能将还原到同一帐户中存在先前备份的任何区域。 使用连续备份模式,可以还原到过去 30 或 7 天的任一时间点,具体取决于配置的层级。

假设一个示例场景,其中还原操作以现有帐户为目标。 在该场景中,如果指定的资源从还原的源数据库或容器时间戳开始在当前写入区域中可用,则可以对指定数据库或容器执行还原操作。 帐户内还原功能不允许在同一帐户中还原现有(或未删除)的数据库或容器。 若要还原实时资源,请将还原操作定向到新帐户。

考虑另外两种情况:

  • 场景 1:截至时间戳 T1,Azure Cosmos DB 帐户有两个区域:“中国北部”(写入区域)和“中国东部”(读取区域)。 假设容器 (C1) 于时间戳 T1 创建,并于 T2 删除。 该容器 C1 可以在保持期内还原。 现在,考虑这样一种情况:将帐户的写入区域故障转移到“中国东部”。 现在,“中国北部”成为读取区域。 即使在这种情况下,只要在指定的还原时间戳,“中国东部”区域中存在 C1C1 就可以在其保持期内还原。

  • 场景 2:在时间戳 T3,Azure Cosmos DB 帐户有一个区域:“中国北部”。 假设 CT2 于时间戳 T4 创建,然后于 T5 删除。 新区域“中国东部”于 T6 添加,然后故障转移到“中国东部”使其成为自 T7 起的新写入区域。 在这种情况下,无法还原 CT2,因为“中国东部”区域中不存在 CT2

以下是时间点帐户内还原功能的当前行为特征列表:

  • 共享吞吐量容器借助其共享吞吐量数据库进行还原。

  • 容器还原操作需要原始数据库存在。 此限制意味着必须先执行父数据库的还原,才能再尝试还原已删除的子容器。

  • 如果同一资源的另一个还原操作已在进行中,该资源(数据库或容器)再还原将失败。

  • 所有还原选项完成后,才可以在共享吞吐量数据库中创建容器。

  • 如果容器或数据库的删除操作已在进行中,再还原容器或数据库将受阻。

  • 如果一个帐户有三种以上不同的资源,则一个帐户中超过三个资源无法并行还原。

  • 如果资源从还原时间开始存在于帐户的当前写入区域中,数据库或容器资源的还原将成功。

  • 当任何帐户级别操作(如添加区域、移除区域或故障转移)正在进行时,无法执行同一帐户还原。

后续步骤