readPreference secondaryPreferred不仅读取辅助节点

时间:2017-06-15 07:47:05

标签: mongodb mongoose

我在AWS上运行了3个mongo实例,1个主要实例和2个辅助实例。我们希望所有读取查询都转到辅助节点,因此我们在创建mongoose连接时使用这些配置选项:

options = {
    db: {
       readPreference: 'secondaryPreferred',
       native_parser: true
    },
    replset: {
        strategy: 'ping',
        auto_reconnect: false,
    }
};
mongoose.connect(databaseUrl, options);

问题:使用这些设置,读取查询将同时发送到辅助节点,而2个辅助节点正在运行。

当我们使用readPreference: 'secondary'时,它正如我们所期望的那样工作:所有读取查询仅发送给辅助查询。

请帮我解释一下,因为mongo docs提到:

  

secondaryPreferred :在大多数情况下,操作从辅助成员读取,但如果没有辅助成员可用,则从主要成员读取操作。

是的,我看到了一些相同的问题,但所有这些问题仍然没有明确的解决方案。 :(

我们正在使用:

  • mongoose:v4.9.5
  • Mongo服务器:v3.2
  • 节点:v5.12.0

1 个答案:

答案 0 :(得分:1)

对于有同样问题的人, 我确认这种行为源于节点驱动程序,Python驱动程序和Java驱动程序似乎没有表现出来。 Mongo开发人员修复了这个bug并等待合并到master。您可以签入此票:docs