Mongos连接到副本集

这是一个非常基本的问题,但我找不到任何答案。 我知道你使用mongos来与一个分割的集合进行交互。 但是,如果我有一个不被分割的副本集,我如何设置mongos以便我的应用程序可以同时使用主集和辅集? 是否甚至有必要使用mongos或将我的应用程序的mongo驱动程序(在这种情况下,PHP)连接到一台服务器,它会自动枚举集中的其他成员,并连接到它们呢?

您可以直接从驱动程序连接到副本集,除非您在分片环境中运行,否则不需要mongos 。 驱动程序通常使用isMaster命令来确定设置的状态,并根据需要(如果使用的是最新版本,根据读取首选项设置)向主设备和次设备发送命令。 如果主服务器出现故障,驱动程序也会处理自动故障转移(当然,延迟很小)。

一旦有人尝试分片,他们宁愿连接到mongos ,让它pipe理沟通回到集,你可以看到这个请求 。 现在,要以这种方式使用mongos ,即使只有(实际上)一个分片,也需要configuration分片环境的最小部分。

此外,有时候人们会知道,他们将来不得不分裂,并开始预测未来的需求,除了向configuration添加分片以外,他们不需要做任何事情。

一般来说, mongos运行的主要先决条件是config数据库(也就是你的config服务器)启动并运行。 你传递给mongos的连接string将是这些config服务器的列表(并且在你开始的每个mongos上应该是一样的),并且mongos必须至less有一个(必须是健康的) 。