请求从 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 门户还原数据的支持请求。 提供其他详细信息(例如数据类型、还原目的、删除数据的时间),以帮助我们设置请求的优先级。
从备份还原数据时的注意事项
在以下情况之一中,可能会意外删除或修改数据:
删除整个 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 门户获取还原详细信息:
登录 Azure 门户并导航到还原的帐户。
打开“标记”页面。
“标记”页应包含标记 restoredAtTimestamp 和 restoredSourceDatabaseAccountName。 这些标记描述了用于定期还原的时间戳和源帐户名称。
还原后的操作
数据还原的主要目标是恢复意外删除或修改的数据。 因此,建议先检查已还原数据,确保其中包含所需内容。 如果一切正常,则可以将数据迁移回主帐户。 虽然可以使用还原的帐户作为新的活动帐户,但如果有生产工作负载,不建议这样做。
还原数据后,你会收到有关新帐户名(通常采用 <original-name>-restored1
格式)和帐户要还原到的时间的通知。 还原的帐户与原始帐户具有相同的预配吞吐量、索引策略,且位于同一区域中。 角色为订阅管理员或共同管理员的用户可以看到还原的帐户。
将数据迁移到原始帐户
可通过下述不同方式将数据迁移回原始帐户:
- 使用 Azure 数据工厂。
- 使用 Azure Cosmos DB 中的更改源。
- 可以编写自己的自定义代码。
建议在迁移数据后立即删除容器或数据库。 如果不删除还原的数据库或容器,它们会在请求单位、存储和流出量方面产生成本。