这是一个非常基本的问题,但我找不到任何答案。我知道您使用 mongos 来连接分片集合。但是,如果我有一个未分片的副本集,我该如何设置 mongos 以便我的应用程序可以同时使用该集中的主要副本和辅助副本?甚至有必要使用 mongos 还是让我的应用程序的 mongo 驱动程序(在本例中为 php)连接到集合中的一台服务器,让它自动枚举集合中的其他成员并连接到它们?
这是一个非常基本的问题,但我找不到任何答案。我知道您使用 mongos 来连接分片集合。但是,如果我有一个未分片的副本集,我该如何设置 mongos 以便我的应用程序可以同时使用该集中的主要副本和辅助副本?甚至有必要使用 mongos 还是让我的应用程序的 mongo 驱动程序(在本例中为 php)连接到集合中的一台服务器,让它自动枚举集合中的其他成员并连接到它们?
您可以直接从驱动程序连接到副本集,
mongos
除非您在分片环境中运行,否则不需要。驱动程序通常使用命令来确定集合的状态,并将适当地向主要和次要发送命令(如果您使用的是最新版本,则isMaster
取决于读取首选项集)。如果主服务器出现故障(当然会有一小段延迟),驱动程序还将处理自动故障转移。一旦有些人尝试分片,他们更喜欢连接到
mongos
一般情况下并让它管理返回集合的通信,正如您从这个请求中看到的那样。现在,要mongos
以这种方式使用,您需要配置分片环境的最少部分,即使您只有(实际上)一个分片。此外,偶尔人们会知道他们将来必须进行分片,并从一个分片开始以预测未来的需求,这样他们除了向配置添加一个分片外不需要做任何事情。
通常,运行的主要先决条件
mongos
是config
数据库(以及您的config
服务器)启动并运行。您传递给的连接字符串mongos
将是这些config
服务器的列表(并且在每次启动时都应该相同mongos
)并且(三个中的)至少一个必须正常运行mongos
才能运行。