【发布时间】:2020-04-30 16:23:43
【问题描述】:
在数据迁移过程中,我遇到了一些关于 Cosmos DB 的奇怪问题。迁移包括删除和重新创建我们的生产集合,然后使用 Azure Cosmos DB 迁移工具从我们的开发集合中复制文档。 我想要完全清除生产集合中已有的数据,而不是复制顶部的新文档,所以为了实现这一点,我执行了以下过程......
- 删除了名为“Production_Products”的生产集合
- 重新创建了具有相同名称和分区键的生产集合
- 使用 Azure Cosmos DB 数据迁移工具,我将开发集合中的文档复制到新创建的空生产集合“Production_Products”
-
迁移完成后,我们测试了网站,但不断收到以下错误...
Microsoft.Azure.Documents.NotFoundException:在 Microsoft.Azure.Documents.AddressResolver.EnsureRoutingMapPresent
这非常令人困惑,因为我们可以从 Azure 中查询数据没有问题。在多个应用程序重新启动并检查配置后,我们创建了一个新集合“Production_Products_Test”并重复了迁移步骤。
这很好用。当天晚些时候,我们通过使用原始名称“Production_Products”重新创建一个新集合来恢复我们的更改,但失败了。我们不得不恢复使用“_Test”集合。
谁能提供任何关于为什么会发生这种情况的见解?
【问题讨论】:
-
在删除/重新创建集合时网站是否正在运行,网站是否持有 Cosmosclient 的单例实例?您使用的是哪个版本的 SDK 和语言?
-
@MatiasQuaranta 该网站是一个使用 Kubernetes 编排的微服务应用程序。当 Cosmos DB 集合被删除并以相同的名称重新创建时,至少有 2 个 C# .net 核心服务具有针对该 Cosmos DB 集合的单例实例。 SDK 是 Microsoft.Azure.DocumentDB.Core 2.13。此数据库跨 2 个区域复制。每个区域运行 3 个实例,每个实例拥有一个客户端到该集合。我们在一个地区(西欧)而不是北欧重新启动了服务。北欧的服务可能会保留旧版本的集合吗?
标签: azure azure-cosmosdb