You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Azure CosmosDB短TTL文档时点恢复后丢失问题及正确操作问询

针对Azure Cosmos DB短TTL文档点恢复的问题解决

目前通过**跨账户点恢复(恢复到新账户)**时,文档的_ts属性不会被重置为恢复时间,这是当前功能的设计限制,不是配置遗漏,但有可行的解决办法:

  • 恢复前临时调整TTL(源账户可用时)
    如果源账户还能访问,先把目标容器的TTL改成-1(禁用自动过期),等下一次自动备份完成后,再基于新备份恢复。这样恢复后的文档不会因为TTL过期被清理,之后再根据业务需求重新设置TTL。

  • 恢复后立即批量更新文档
    恢复完成后,马上对需要保留的文档执行一次无意义的更新(比如加个临时属性再删掉,或者把某个属性设为原值),这会触发_ts更新为当前时间,重置TTL倒计时。用Cosmos DB的批量操作API可以高效处理大量文档,示例伪代码:

    var batch = container.CreateTransactionalBatch(new PartitionKey("your-partition-key"));
    foreach (var doc in targetDocs)
    {
        doc["_temp_update"] = "dummy";
        batch.ReplaceItem(doc.Id, doc);
    }
    var response = await batch.ExecuteAsync();
    // 后续可批量移除临时属性
    
  • 关于预期与实际不符的说明
    微软论坛提到的_ts重置逻辑,大概率只适用于同账户内的点恢复,跨账户恢复时系统会严格复刻备份里的所有元数据(包括_ts),这是当前的设计,但官方文档确实没明确说明这个细节。如果对这个行为有疑问,可以提交Azure支持工单让官方确认。

  • 长期规避方案
    对需要频繁恢复的重要数据,要么别设太短的TTL,要么单独存到禁用TTL的容器里;定期备份前,检查关键数据的TTL配置,避免备份后数据很快过期。

内容的提问来源于stack exchange,提问作者jschmitter

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 14:35:03