请求从 Azure Cosmos DB 备份进行数据还原

适用对象: NoSQL MongoDB Cassandra Gremlin

如果意外删除了数据库或容器,可以提交支持工单联系 Azure 支持,以便从自动联机备份中还原数据。 Azure 支持仅适用于选定计划,例如 标准开发人员 以及更高层级的计划。 Azure 支持不适用于 基本 计划。 若要了解不同的支持方案,请参阅 Azure 支持计划页。

若要还原备份的特定快照,Azure Cosmos DB 要求数据在该快照的备份周期内可用。 在请求还原之前,应该了解以下详细信息:

  • 准备好订阅 ID。
  • 应根据数据被意外删除或修改的方式,准备好提供其他信息。 建议提前准备可用信息,从而最大程度地减少在一些有时效的情况下可能有害的来回传输。
  • 如果删除了整个 Azure Cosmos DB 帐户,则需要提供删除的帐户的名称。 如果创建了同名的另一个帐户,请与支持团队共享该帐户,因为这有助于确定要选择的正确帐户。 建议为删除的每个帐户提交不同的支持工单,因为这可以最大限度地减少还原状态的混乱。
  • 如果删除了一个或多个数据库,应提供 Azure Cosmos DB 帐户及 Azure Cosmos DB 数据库名,并指定是否存在同名的新数据库。
  • 如果删除了一个或多个容器,应提供 Azure Cosmos DB 帐户名、数据库名和容器名。 并指定是否存在同名容器。
  • 如果意外删除或损坏了数据,应在 8 小时内联系 Azure 支持,以便 Azure Cosmos DB 团队帮助从备份中还原数据。 在创建支持请求以申请还原数据之前,请确保将帐户的备份保留期延长到至少 7 天。 最好在发生此事件的 8 小时内延长保留期。 这样,Azure Cosmos DB 支持团队才有足够时间还原帐户。

除了 Azure Cosmos DB 帐户名、数据库名称、容器名称之外,还应指定用于数据还原的时间点。 必须尽量精确,从而帮助我们确定当时的最佳可用备份。 指定 UTC 时间也很重要。 如果要还原没有网络访问权限的帐户,请在票证中提及。

下面的屏幕截图说明如何为容器(集合/图/表)创建通过 Azure 门户还原数据的支持请求。 提供其他详细信息(例如数据类型、还原目的、删除数据的时间),以帮助我们设置请求的优先级。

Screenshot of creating a backup support request using the Azure portal.

从备份还原数据时的注意事项

在以下情况之一中,可能会意外删除或修改数据:

  • 删除整个 Azure Cosmos DB 帐户。

  • 删除一个或多个 Azure Cosmos DB 数据库。

  • 删除一个或多个 Azure Cosmos DB 容器。

  • 删除或修改容器中的 Azure Cosmos DB 项(例如文档)。 此特定情况通常称为"数据损坏"。

  • 删除或损坏共享产品数据库中的共享产品数据库或容器。

在上述所有情况中,Azure Cosmos DB 均可还原数据。 从备份中还原时,会新建 Azure Cosmos DB 帐户以保存还原的数据。 如果未指定,新帐户的名称会采用 <Azure_Cosmos_account_original_name>-restored1 格式。 如果尝试多次还原,则最后一位数将递增。 不能将数据还原到预创建的 Azure Cosmos DB 帐户中。

意外删除 Azure Cosmos DB 帐户后,如果帐户名未使用,可以将数据还原到同名的新帐户中。 因此,建议不要在删除帐户后重新创建它。 因为这样不仅会阻止还原数据使用相同的名称,还会难以确定正确还原帐户。

意外删除 Azure Cosmos DB 数据库后,我们可以还原整个数据库或该数据库中的容器子集。 还可以跨数据库选择特定容器并将它们还原到新的 Azure Cosmos DB 帐户中。

如果意外删除或修改了容器中的一个或多个项(即数据损坏情况),需要指定还原到的时间。 如果数据损坏,则时间很重要。 由于容器是实时的,所以备份仍在运行,因此如果超过了保持期(默认值为 8 小时),备份将被覆盖。 若要防止备份被覆盖,请将帐户的备份保留期增加到至少七天。 最好在发生数据损坏后的 8 小时内延长保留期。

如果意外删除或损坏了数据,应在 8 小时内联系 Azure 支持,以便 Azure Cosmos DB 团队帮助从备份中还原数据。 这样,Azure Cosmos DB 支持团队才有足够时间还原帐户。

注意

还原数据后,并非所有源功能或设置都会转移到还原的帐户。 以下设置不会转移到新帐户:

  • VNET 访问控制列表
  • 存储过程、触发器和用户定义的函数
  • 多区域设置
  • 托管标识设置

如果在数据库级别分配吞吐量,在这种情况下,会在整个数据库级别(而非单个容器级别)执行备份和还原过程。 在这种情况下,无法选择还原容器子集。

从还原的帐户获取还原详细信息

还原操作完成后,你可能想要了解从其还原的源帐户的详细信息或还原时间。 可以从 Azure 门户、PowerShell 或 CLI 获取这些详细信息。

使用以下步骤从 Azure 门户获取还原详细信息:

  1. 登录 Azure 门户并导航到还原的帐户。

  2. 打开“标记”页面。

  3. 标记”页应包含标记 restoredAtTimestamprestoredSourceDatabaseAccountName。 这些标记描述了用于定期还原的时间戳和源帐户名称。

还原后的操作

数据还原的主要目标是恢复意外删除或修改的数据。 因此,建议先检查已还原数据,确保其中包含所需内容。 如果一切正常,则可以将数据迁移回主帐户。 虽然可以使用还原的帐户作为新的活动帐户,但如果有生产工作负载,不建议这样做。

还原数据后,你会收到有关新帐户名(通常采用 <original-name>-restored1 格式)和帐户要还原到的时间的通知。 还原的帐户与原始帐户具有相同的预配吞吐量、索引策略,且位于同一区域中。 角色为订阅管理员或共同管理员的用户可以看到还原的帐户。

将数据迁移到原始帐户

可通过下述不同方式将数据迁移回原始帐户:

建议在迁移数据后立即删除容器或数据库。 如果不删除还原的数据库或容器,它们会在请求单位、存储和流出量方面产生成本。

后续步骤