【问题标题】:how to execute read only query on sharded replica set in mongodb如何对mongodb中的分片副本集执行只读查询
【发布时间】:2014-11-01 15:20:37
【问题描述】:

考虑以下配置 -

  1. 2 分片服务器每个都有 1 个副本集(例如 rs0 和 rs1)。
  2. 3 个配置服务器和 1 个查询路由器 (mongos)

上述分片配置工作正常。但是,我想从分片副本集(从 rs0 和 rs1 的次要)执行只读查询。因为,mongodb 数据存在于副本集 rs0 和 rs1 中。那么,如何配置它,从 rs0 和 rs1 的辅助节点获取数据?

【问题讨论】:

    标签: mongodb replication sharding


    【解决方案1】:

    您的分片设置不应影响读取首选项的使用,因此您可以继续使用 Secondary 或 SecondaryPreferred 访问每个分片中副本集的辅助节点:

    分片集群中的读取偏好

    2.2 版更改:在 2.2 版之前,mongos 不支持 读取偏好模式语义。

    在大多数分片集群中,每个分片都由一个副本集组成。作为 这样,阅读偏好也适用。关于阅读 首选项,分片集群中的读取操作与 未分片的副本集。

    与简单的副本集不同,在分片集群中,所有与 分片从客户端传递到 mongos 实例 实际连接到集合成员。然后mongos负责 阅读偏好的应用,它对 应用程序。

    完全支持读取无需更改配置 分片环境中的偏好模式,只要 mongos 在 最低版本 2.2。所有 mongos 都维护自己的连接池 副本集成员。结果:

    • 没有指定首选项的请求具有主要的默认值,除非 mongos 重用具有不同的现有连接 模式设置。为防止混淆,请始终明确设置您的阅读 偏好模式。

    • 所有最近和延迟计算都反映了 mongos 和 mongod 实例之间的连接,而不是客户端和 mongod
      实例。这会产生预期的结果,因为所有结果都必须 在返回客户端之前通过 mongos。

    http://docs.mongodb.org/manual/core/read-preference-mechanics/

    【讨论】:

      【解决方案2】:

      在您选择的驱动程序中使用Read Preferences,并将此“只读”查询的首选项设置为Secondary 或SecondaryPreferred。另请阅读 Asya 的 blog post about scaling with secondaries

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-10-03
        • 2013-12-22
        • 1970-01-01
        • 2014-04-18
        • 2015-06-27
        • 1970-01-01
        • 2022-01-26
        • 2012-03-02
        相关资源
        最近更新 更多