考虑以下配置 -
上面的分片配置工作正常。但是,我想从分片副本集(从rs0和rs1的辅助副本集)执行只读查询。因为,mongodb数据存在于副本集rs0和rs1中。那么,如何配置它,从rs0和rs1的二级中获取数据?
答案 0 :(得分:1)
在您选择的驱动程序中使用Read Preferences,并为此“只读”查询将首选项设置为Secondary或SecondaryPreferred。另请阅读Asya的blog post about scaling with secondaries。
答案 1 :(得分:1)
您的分片设置不应影响使用读取首选项,因此您可以继续使用Secondary或SecondaryPreferred访问每个分片中副本集的副本:
读取分片群集中的首选项
在2.2版中更改:在2.2版之前,mongos不支持 读取偏好模式语义。
在大多数分片群集中,每个分片都包含一个副本集。如 这样,阅读偏好也适用。关于阅读 首选项,分片群集中的读取操作与之相同 没有复制的副本。
与简单副本集不同,在分片群集中,所有交互都与 分片从客户端传递到mongos实例 实际连接到集成员。然后mongos负责 读取首选项的应用,这是透明的 应用
完全支持读取不需要进行任何配置更改 在分片环境中的偏好模式,只要mongos在 至少版本2.2。所有mongos都保持自己的连接池 副本集成员。结果:
没有指定首选项的请求具有primary(默认值),除非mongos重用具有不同的现有连接 模式设置。为防止混淆,请始终明确设置您的阅读 偏好模式。
所有最近和延迟计算都反映了mongos和mongod实例之间的连接,而不是客户端和mongod
实例。这会产生所需的结果,因为所有结果都必须如此 在返回客户之前通过mongos。
http://docs.mongodb.org/manual/core/read-preference-mechanics/