1

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

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

如果我的客户很高兴地查询 AI 理解写入被复制到 B 但是如果服务器 A 变得不可访问会发生什么?

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

我问是因为我的客户的配置有一个指向 A 的 uri,但对 B 没有任何内容。这是正确的吗?

4

1 回答 1

3

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

您不应将两个实例用作副本集的一部分。您应该有一个仲裁者或另一个辅助者,以便可以进行选举。

在此处查看陷阱,在此处查看复制基础知识,在此处查看有关选举的信息。

如果我的客户很高兴地查询 AI 理解写入被复制到 B 但是如果服务器 A 变得不可访问会发生什么?

该服务应该在服务器 B 成为主服务器的情况下进行故障转移。但是,对于两个实例,服务器 B 将无法将自己选为主服务器,因为没有多数。

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

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

于 2012-11-15T11:16:42.120 回答