mongoDB副本集

mongoDB副本集,mongodb,replication,Mongodb,Replication,我试图理解MongoDB中副本集的概念 以2个mongoDB实例a(主要)和B(次要)为例 如果我的客户机正在愉快地查询A,我知道写操作会复制到B,但如果服务器A变得不可访问,会发生什么 虽然在mongo复制方面,我可以看到B被选为新的主服务器,但客户机如何知道现在将其查询传递给B而不是A?这一切都是在mongo内部完成的吗 我这样问是因为我的客户机配置有一个指向a的uri,而B却没有。这是正确的吗 以2个mongoDB实例a(主要)和B(次要)为例 您不应该使用两个实例作为副本集的一部分。你应

我试图理解MongoDB中副本集的概念

以2个mongoDB实例a(主要)和B(次要)为例

如果我的客户机正在愉快地查询A,我知道写操作会复制到B,但如果服务器A变得不可访问,会发生什么

虽然在mongo复制方面,我可以看到B被选为新的主服务器,但客户机如何知道现在将其查询传递给B而不是A?这一切都是在mongo内部完成的吗

我这样问是因为我的客户机配置有一个指向a的uri,而B却没有。这是正确的吗

以2个mongoDB实例a(主要)和B(次要)为例

您不应该使用两个实例作为副本集的一部分。你应该有一个或另一个中学,以便进行选举

有关gotchas、复制基础知识和选举信息,请参阅

如果我的客户机正在愉快地查询A,我知道写操作会复制到B,但如果服务器A变得不可访问,会发生什么

该服务应在服务器B成为主服务器的情况下运行。但是,有两个实例,服务器B将无法选择自己作为主服务器,因为没有多数

虽然在mongo复制方面,我可以看到B被选为新的主服务器,但客户机如何知道现在将其查询传递给B而不是A?这一切都是在mongo内部完成的吗


这通常通过驱动程序执行,因为驱动程序知道副本集配置。请参阅相关驱动程序文档(取决于您使用的驱动程序)。

谢谢您的回复。关于偶数个mongo实例的观点很好——我没有注意到这一点,但在提供的gotchas链接中提到了这一点。我用的是c#driver。我看到它提到在连接字符串中指定多个服务器。如果所有服务器都是同一个集合的一部分(并且您在连接字符串中指定了复制集合的名称),那么为什么要提供多个服务器呢?我对C#驱动程序一点也不在行,但我强烈建议遵循那里的文档。队里的人都很彻底,我来试试。感谢您的帮助。客户可以知道如何使用应用程序中指定的
阅读首选项进行查询。请参阅此链接