我可以从“mongos”控制台发起查询,并查看读取命中初选。我可以成功执行 rs.slaveOk();
然后触发相同的查询,并看到读取命中辅助节点。
问题是无论我尝试什么,我都无法在 Mongoid 中获得查询击中次级。它似乎没有发送 slaveOk
。我试过在 mongoid.yml 中设置 read::secondary
,我也试过 read_secondary: true
,但底层连接是不是副本集,所以我想这就是 mongoid 忽略它的原因。
有没有其他方法(除了创建我自己的连接池和设置 :slave_ok
)让 mongoid 工作?我是否缺少一些神奇的未记录的 yml 设置?
最佳答案
由于 Mongoid 连接到单个 mongos 路由器,只需在 mongoid.yml 中的主机名条目下方添加以下行:
slave_ok: true
关于mongodb - 为什么 Mongoid 不在分片环境中将 slaveOk 发送到 mongos?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8053069/