我在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 :在大多数情况下,操作从辅助成员读取,但如果没有辅助成员可用,则从主要成员读取操作。
我们正在使用:
答案 0 :(得分:1)
对于有同样问题的人, 我确认这种行为源于节点驱动程序,Python驱动程序和Java驱动程序似乎没有表现出来。 Mongo开发人员修复了这个bug并等待合并到master。您可以签入此票:docs