当前位置: 首页 > 知识库问答 >
问题:

使用MongoDB进行Cosmos DB故障转移。驱动程序库

云宜人
2023-03-14

我有一个使用MongoDB的应用程序。驱动程序库(2.7.3)用于连接Azure上的CosmosDB。Cosmos帐户被设置为复制到另一个区域的辅助帐户以进行灾难恢复。我遇到的一个问题是,当我们对Cosmos帐户进行故障转移时,我们会失去连接,并在写入数据时出现以下错误:

在30000ms使用CompositeServerSelector{Selectors=MongoDB.Driver.MongoClientArea SessionsSupport portdServerSelector, LatencyLimitingServerSelector{AlloudLatencyRange=00:00:00.0150000}}选择服务器后发生超时。集群状态的客户端视图为{ClusterId:"1", ConnectionMode:"自动", Type:"ReplicaSet", State:"Connection", Servers:[{ServerId:"{ClusterId: 1, EndPoint:"Un指定/myCosmosAccount.documents.azure.com:10255 " }", EndPoint:"Un指定/myCosmosAccount.documents.azure.com:10255", State:"Connection", Type:"ReplicaSet其他", Tags:"{区域:北欧}", WireVersionRange:"[0,2]" }] }

我知道可以在MongoDB连接字符串中指定多个服务器,但是我不清楚如何使用Cosmos DB来实现这一点,Cosmos DB只有一个帐户的终结点。我当前的连接字符串是这样的:

mongodb://myCosmosAccount:Key@myCosmosAccount.documents.azure.com:10255/myCosmosDatabase?ssl=true

是否可以使用此库执行此操作,或者我是否需要切换到使用 Cosmos DB SDK 来改进灾难恢复?

共有1个答案

佴英奕
2023-03-14

我在这里找到了这个问题的解决方案:https://social . msdn . Microsoft . com/Forums/azure/en-US/8 CDF 09 af-ff75-4c 9b-8eb 4-179464 e 04018/azure-cosmos-d b-breaks-during-manual-failover?forum=azurecosmosdb

我需要在我的连接字符串的末尾添加:副本集=globaldb,所以它现在看起来像这样:

mongodb://myCosmosAccount:Key@myCosmosAccount.documents.azure.com:10255/myCosmosDatabase?ssl=true&replicaSet=globaldb
 类似资料:
  • 我们有一个mongodb副本集,其中包含两个实例(127.0.0.1:27017-主要,127.0.0.1:27018-次要)和一个仲裁器(127.0.0.1:27019)。当我使用rs.steppdown(60)从主实例中退出时,它应该成为辅助实例,辅助实例应该成为主实例,所有写操作都应该在辅助实例中发生(退出后的主实例)。但在卸任后,我遇到了一个异常“无法将数据写入传输连接:远程主机强制关闭了

  • 对于复制,我们设置Server1作为主服务器,设置server2作为次服务器...一切正常。 期望:当server1停机时,次要的server2不会自动变成主要的。它仍然是次要的。server2也有可能自动成为主服务器。 情况2:MongoDB复制是否需要3台强制服务器,以便当server1宕机时,server2将自动成为主要服务器,server3将保持次要服务器。(这很管用)

  • 问题内容: 我们目前正在使用Redis 2.8.4和StackExchange.Redis(并喜欢它),但目前没有针对硬件故障等的任何保护措施。我正在尝试使解决方案起作用,从而使我们具有主/从属和哨兵监视功能,但无法完全到达目标位置,并且在搜索后无法找到任何实际的指针。 因此,目前我们已经做到了: 每个节点上都有3个Redis服务器和哨兵(由Linux专家设置):devredis01:6383(主

  • 我们在每个节点上都有3个redis服务器和sentinel(由Linux人员设置):devredis01:6383(主)devredis02:6383(从)devredis03:6383(从)devredis01:26379(sentinel)devredis02:26379(sentinel)devredis03:26379(sentinel) 我能够将StackExchange客户机连接到re

  • 我正在尝试用6台机器实现一个Redis集群。我有一个由六台机器组成的流浪集群: 运行redis服务器 我编辑了上述所有服务器的/etc/redis/redis.conf文件,添加了这个 然后我在六台机器中的一台上运行了这个程序; Redis集群已启动并运行。我通过在一台机器上设置值手动检查它显示在其他机器上。 我的问题是,当我关闭或停止任何一台主机上的redis server时,整个集群都会停止运

  • 问题内容: 在简单情况下,如果3台服务器具有1个主服务器和2个从属服务器而没有分片。是否有使用Java和Jedis的经过验证的解决方案,该解决方案没有单点故障,并且将自动处理单个服务器(无论是主服务器还是从服务器)(自动故障转移)。例如,提升主机并在故障后重置,而不会丢失任何数据。 在我看来,这似乎应该是一个已解决的问题,但是我找不到关于它的任何代码,而仅是对实现此方法的高级描述。 谁实际覆盖并在