Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在mongodb中对分片副本集执行只读查询_Mongodb_Replication_Sharding - Fatal编程技术网

如何在mongodb中对分片副本集执行只读查询

如何在mongodb中对分片副本集执行只读查询,mongodb,replication,sharding,Mongodb,Replication,Sharding,考虑以下配置- 2个分片服务器,每个服务器有1个副本集(例如rs0和rs1) 3个配置服务器和1个查询路由器(mongos) 上述分片配置工作正常。但是,我想从分片副本集(从rs0和rs1的次副本)执行只读查询。因为,mongodb数据同时存在于副本集rs0和rs1中。那么,如何配置它,从rs0和rs1的二级数据中提取数据?在您选择的驱动程序中使用,并将首选项设置为secondary或SecondaryPreferred以用于此“只读”查询。同时读取Asya。您的分片设置不应影响读取首选项的使用

考虑以下配置-

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

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

    在您选择的驱动程序中使用,并将首选项设置为secondary或SecondaryPreferred以用于此“只读”查询。同时读取Asya。

    您的分片设置不应影响读取首选项的使用,因此您可以继续使用Secondary或Secondary Preferred来访问每个分片内副本集的二级副本:

    分片集群中的读取首选项

    在版本2.2中更改:在版本2.2之前,mongos不支持 读取首选模式语义

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

    与简单副本集不同,在分片集群中,所有与 碎片从客户机传递到正在运行的mongos实例 实际连接到集合成员。然后,mongos负责 读取首选项的应用程序,对用户透明 应用程序

    完全支持读取不需要进行配置更改 分片环境中的首选模式,只要mongos处于 最低版本2.2。所有mongos都维护自己的连接池 复制集成员。因此:

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

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