Azure Cosmos DB的软删除(预览版)

Azure Cosmos DB软删除是一项数据复原功能,可在可配置的时间段(默认 1 天)内保留已删除的资源(帐户、数据库、容器),而不是一次性永久删除它们。 软删除可快速从意外删除中恢复,而无需从备份还原。 实际上,当软删除处于活动状态时,删除Azure Cosmos DB资源会将其标记为“软删除”(如回收站),使其在内部保留,并且可以在保留时段内还原。 在保留期到期或授权用户提前显式清除保留期后,资源将被永久删除。

此功能解决了关键操作需求:数据库或容器的意外删除当前可能导致长时间的停机时间和复杂的还原过程。 软删除可在几分钟内原位撤销删除操作,从而大幅减少停机时间。 它提供一个安全网,以便如果错误地删除了Azure Cosmos DB资源,则可以在最小的中断的情况下快速恢复它。

主要优点和用例

  • 快速恢复和最短停机时间:软删除允许在几分钟内还原已删除Azure Cosmos DB资源,因为数据永远不会真正离开服务。 与可能需要数小时的传统恢复工作流程相比,这种方法有了巨大的改进。 在意外删除后,应用程序可以快速恢复,从而将潜在的停机时间从几天缩短到几分钟。

  • 防止人为失误:它可作为防止失误的安全网。 如果管理员或自动化脚本错误地删除了数据库或容器,则不会丢失数据 - 它可以立即取消删除。 软删除可显著降低用户错误导致灾难性数据丢失的风险,并避免业务停机。

  • 简化还原过程:通过软删除进行恢复比基于备份的还原更简单。 资源将在原位置恢复,并具有与删除前相同的名称、设置和数据。 无需创建新的帐户或容器,也无需重新配置网络或应用程序连接,因为资源标识保持不变。 就地还原还意味着所有辅助配置(索引、吞吐量、权限)在软删除/恢复周期中保持不变。

  • 减少了操作开销:软删除功能通过防止意外删除变成重大事件来节省工程时间和精力。

  • 补充备份和 DR 策略:软删除涵盖意外删除的短期恢复,而现有备份和时间点还原功能涵盖数据损坏或灾难恢复等其他方案。 它们共同提供了更完整的数据保护故事。 值得注意的是,如果资源已软删除,则使用软删除恢复,而不是备份。 事实上,系统不允许通过现有软删除资源还原备份 - 必须先清除备份,确保软删除机制是防御的前沿。

软删除的工作方式

启用软删除

此功能在Azure Cosmos DB帐户级别以及保留策略上启用。 为帐户启用软删除后,该帐户中数据库或容器的所有删除都使用软删除行为。 不能以特定数据库或容器为目标来设置不同的设置 - 它是帐户范围的设置。 如果未在帐户上启用软删除,则删除操作正常,即立即永久删除。

启用软删除后,删除Azure Cosmos DB帐户会将整个帐户和所有子资源标记为软删除。 删除启用了软删除的帐户中的数据库会软删除该数据库及其中的所有容器。 删除容器只会软删除该容器。 这种级联行为可确保不会遗留任何孤立资源。 如果还原父资源(例如账户或数据库),该操作会一并恢复其所有子资源,除非您在软删除父资源之前已先软删除这些子资源。

软删除状态

资源(帐户、数据库或容器)软删除后,它会进入保留但不可访问的状态:

  • 资源未在活动资源中列出。 例如,在数据库中列出容器时,不会显示软删除的容器。

  • 所有数据平面操作均已禁用。 任何尝试访问该数据的行为,都会表现得如同该资源不存在一样。 对已软删除的容器执行查询或更新操作时,应用程序会收到 404 Not Found 错误,这与容器被永久删除时的情况相同。 这种机制可确保已软删除的数据在等待删除期间不会被无意中使用或修改。

  • 但是,在内部,Azure Cosmos DB保留资源的所有数据和元数据。 删除是逻辑的 - 基础数据文件和配置在保留期内保留。 软删除的资源对用户而言是不可见的,但在系统中仍然保留。

Retention

保留期:软删除的资源在配置的保留期内保持可恢复。 默认情况下,保留期为 1 天,但管理员可以将每个帐户的此设置调整为 1 到 30 天。 可以选择较短的保留期(例如一天),以降低存储开销或更长的时间段(例如 30 天),以确保额外的安全性。 在此保留时段内,可以随时还原资源。 保留期结束后,或者如果资源被提前明确清除,服务会永久删除该资源,且无法再通过软删除将其还原。

  • 示例:如果保留期设置为 14 天,并在 5 月 1 日删除容器,则保留到 5 月 15 日。 在 5 月 15 日或之后不久,如果未恢复,Azure Cosmos DB将永久清除该容器及其数据。 在 5 月 1 日到 5 月 15 日期间,容器可以恢复其所有内容不变,或者如果授权用户提前显式清除该容器,则会永久删除该资源。

  • 当资源处于软删除状态时,会保留其名称。 在清除原始资源之前,无法在该 Cosmos 帐户中创建同名的新资源。 例如,如果名为“OrdersDB”的数据库被软删除,那么尝试创建一个名为“OrdersDB”的新数据库时,会导致出现“该名称已存在”的错误。 此限制可防止软删除资源与新资源之间的任何混淆或冲突。

清除前的最小保留期

MinMinutesBeforePermanentDeletionAllowed - 定义可永久清除软删除资源之前的最低保留期(以分钟为单位)。 允许的最小值为 0 分钟。

  • 强制执行安全窗口期——在该时间过去之前发起的清除尝试将被拒绝

  • 始终允许恢复 - 可以在保留期间随时恢复资源

  • 适用于所有级别 - 容器、数据库和帐户

示例:如果设置为 60 分钟,则在下午 2:00 删除的资源在下午 3:00 之前无法清除

恢复(取消删除)

在保留期内的任何时间点,授权用户都可以取消删除或恢复资源。 恢复软删除的资源会将其返回到活动状态:

  • 该资源会重新显示在账户中,并使用相同的 URI/名称,其所有数据、预配吞吐量和设置都与其被删除时的状态相同。 就好像删除从未发生过。

  • 任何下游应用程序都可以在不更改的情况下继续使用资源。

  • 恢复通常是快速的,因为不需要数据复制 - 这是一项元数据操作,可将资源翻回到活动状态。 从用户的角度来看,恢复是即时的。

  • 为该资源清除保留期和软删除状态(如果需要,可以再次将其删除,这将启动新的软删除周期)。

若要恢复资源,请使用Azure管理工具(一旦广泛发布该功能)。

例如,Azure CLI命令可用于恢复数据库或容器。 Azure门户还提供一个用户友好的界面(例如,数据资源管理器中的“回收站”或恢复选项),以选择软删除的项目并恢复它。 所有恢复操作均受 Azure 基于角色的访问控制保护(例如,只有被分配了内置 Cosmos DB 帐户参与者 角色的用户(该角色在 Azure 内置角色参考 中也列为 DocumentDB 帐户参与者),或被分配了权限更高角色的用户,才能发起取消删除操作)。

永久删除(清除)

如果在保留期内未恢复软删除的资源,Azure Cosmos DB在时间过后自动清除它。 但是,你可能希望在保留时段结束之前永久删除软删除的资源-例如,如果删除了测试资源,并且不需要它,或者出于符合性原因,需要立即删除它。 软删除功能支持手动清除软删除的资源:

  • 授权用户可以发出清除命令(通过 CLI、PowerShell 或门户)立即硬删除资源,即使资源仍在保留期内也是如此。
  • 彻底删除会释放该资源名称,并停止与该资源相关的后续计费。
  • 一旦清除,数据将无法恢复,除非从备份中还原。

值得注意的是,启用该功能时,所有删除操作都会经历软删除路径。 除非完全在帐户上禁用该功能或在软删除后执行清除,否则无法通过直接硬删除“绕过”软删除。 此设计可确保一致性:默认情况下(在时间范围内)任何删除都是可逆的,并且仅通过显式选择(等待保留或清除)最终完成。

交互和其他详细信息

备份恢复冲突

如果尝试还原当前软删除的资源的备份,该服务不允许备份。 必须直接还原软删除的资源,或首先永久删除它。 例如,此限制可防止在保留的较新副本的基础上还原较旧的备份,这可能会造成不一致。 实际上,如果资源是软删除的,则使用软删除恢复是首选方法。 如果数据已损坏,或者直到保留期到期后才发现数据已被删除,备份就会派上用场。

计费和成本

启用软删除不会产生任何额外的服务费 - 这是一项内置功能。 但是,当资源被软删除时,它仍会像处于活动状态一样计费。 资源仍消耗存储(并且可能仍分配保留的吞吐量)。 例如,如果对一个已预配 10,000 RU/秒的容器执行软删除,则在该容器被彻底删除之前,这 10,000 RU/秒仍会保持分配状态(并继续计费)。 这一点很重要:软删除用于保护,而不是节省成本。 管理员在确信不再需要数据时,应清除软删除的资源,以避免不必要的费用。 因此,此功能以一些临时资源使用开销为代价提供安全。

Performance

对启用软删除的账户不会产生显著的性能影响,但发生删除操作时会有少量额外开销。 对现有数据的正常操作不受影响。 系统的后台任务处理保留和清除,这些保留和清除设计为低优先级,不会干扰前台工作负荷。

安全性和访问控制

只有拥有足够权限(例如 Cosmos DB 帐户参与者或所有者角色)的用户才能软删除或还原资源。 任何读取或写入操作都无法访问软删除的数据,因此它在该临时状态下保持安全。

管理界面

软删除可以通过所有标准Azure接口进行管理:

  • Azure门户:用于在帐户级别启用/禁用该功能的 UI,并枚举和还原软删除的资源(例如,具有恢复选项的“已删除邮件”列表)。 此功能在封闭预览版中不可用。

  • Azure CLI/PowerShell:用于配置保留、列出软删除的资源以及调用还原或清除操作的命令(适用于脚本和自动化方案)。

  • Azure 资源管理器(REST API):将为 Azure Cosmos DB 帐户资源引入用于软删除设置(如保留时长)的新属性,并引入用于列出和还原已删除资源的新 API。

注册订阅

在 Azure Cosmos DB 中注册订阅以访问预览软删除功能。 下面是请求访问权限的步骤。 注册不是自动的,最多可能需要一周才能处理。

  1. 打开Azure门户https://portal.azure.cn)并使用Azure帐户登录。

  2. 导航到Azure订阅的“预览功能”部分。

  3. 使用术语“软删除预览”筛选预览功能列表。

  4. 找到Azure Cosmos DB软删除预览功能。

  5. 选择“注册”按钮。

    Azure门户中软删除功能、资源枚举和激活/停用的屏幕截图。

常见问题解答

Azure Cosmos DB中的软删除是什么?

软删除是一项功能,用于保留可配置保留期(默认 1 天)的已删除Azure Cosmos DB资源(帐户、数据库、容器),允许在永久删除之前进行恢复。

如何启用软删除?

在 Azure Cosmos DB 帐户级别启用软删除。 启用后,帐户中的所有删除都遵循软删除行为。 在预览阶段,Azure Cosmos DB 产品团队负责启用。

是否可以恢复已删除的容器或数据库?

在保留期内,授权用户可以将软删除的资源还原到其原始状态。 在预览版中,必须通过Azure Cosmos DB团队请求恢复。

保留期结束后会发生什么情况?

如果在保留期内未恢复软删除的资源,则会自动清除并永久删除该资源。

是否可以在保留期结束之前清除软删除的资源?

授权用户可以手动清除资源。 但是,如果配置了最小保留策略,则清除可能会受到限制,直到该时间段过去。

软删除的资源是否计费?

已软删除的资源在被永久删除之前,仍会就预配吞吐量和存储持续产生费用。

是否可以创建一个与已软删除的资源同名的新资源?

No. 资源名称在保留期内保留。 在重新使用该资源的名称之前,必须先清除已软删除的资源。

软删除是否可用于Azure Cosmos DB中的所有兼容性 API?

“否”。 仅NoSQL的Azure Cosmos DB支持软删除。 不支持 MongoDB、Apache Cassandra、Apache Gremlin 和 Table。

软删除在 Azure 门户中是否可用?

软删除在 Azure 门户中可用。

是否可以配置保留期?

每个帐户的保留期可配置为 1 到 30 天。 在当前预览版中,Azure Cosmos DB团队控制此设置。