在mongodb中将readpreference设置为secondary时,写入操作是否转到secondary?
我已经设置了复制(本地主机:27017(主)、本地主机:27018(辅助)、本地主机:27019(arb)) 我已在连接杆中将readPrefrence设置为辅助,如下所示 setReadPreference(ReadPreference.secondary()) 当我通过此连接保存一些数据时,是否会请求路由到主节点 我如何确认这一点 我见过DBCollection coll=getCollection()在mongodb中将readpreference设置为secondary时,写入操作是否转到secondary?,mongodb,mongomapper,mongodb-query,spring-data-mongodb,mongo-java,Mongodb,Mongomapper,Mongodb Query,Spring Data Mongodb,Mongo Java,我已经设置了复制(本地主机:27017(主)、本地主机:27018(辅助)、本地主机:27019(arb)) 我已在连接杆中将readPrefrence设置为辅助,如下所示 setReadPreference(ReadPreference.secondary()) 当我通过此连接保存一些数据时,是否会请求路由到主节点 我如何确认这一点 我见过DBCollection coll=getCollection() 在此“serverUsed”中,显示了“localhost:27018”。否。正如术语所
在此“serverUsed”中,显示了“localhost:27018”。否。正如术语所述,
readPreference
仅设置要从集群中读取的首选服务器。只能写入副本集中的主服务器 它不从主设备读取,读取首选项辅助设备就是这个意思,它永远不会干扰主设备。这将自动完成,对吗?意味着写入操作将转到主右侧?总是写入操作转到主。当我看到DBCollection coll=getCollection()时;coll.getStats()我看到的输出如下{“serverUsed”:“localhost/127.0.0.1:27017”,“ns”:“test_db.Customer”,“count”:4,“size”:320,“avgObjSize”:80.0,“storageSize”:4864,“numExtents”:1,“nindex”:1,“lastExtentSize”:4864,“paddingFactor”:1.0,“flags”:1,“totalIndexSize”:8192,“indexSizes”:{“id”:8192},“ok”:1.0}服务器使用是什么意思?@rajesh不仅仅是自动的。在主屏幕上写字是不可能的。它不是一个可以设置或更改的配置。我不确定serverused是什么意思,因为我从未使用过java mongo api,但它似乎就是从中获取统计数据的服务器。我认为getStats映射到shell中的collection stats函数。在这种情况下,我认为您正在从主服务器获取统计信息。由于stats是无害的,不会更新数据,所以我认为从master获取数据是很正常的。无论如何,请记住,您可以在查找操作中始终使用读取首选项覆盖此行为。可能您想使用secondary Preferred,它与secondary稍有不同。次要始终是次要的,次要首选从次要读取,如果没有成员可用,则从主要读取。任何方式写入操作都只能正确地转到主要,即使我们将readpreference设置为次要?写入操作始终转到主要,您无法将它们发送到次要。当我看到DBCollection coll=getCollection()时,副本集的其余成员仅接收读取(当然是在启用它们的情况下),并且它们包含数据(请记住,存在不同的副本集成员);coll.getStats()我看到的输出如下{“serverUsed”:“localhost/127.0.0.1:27017”,“ns”:“test_db.Customer”,“count”:4,“size”:320,“avgObjSize”:80.0,“storageSize”:4864,“numExtents”:1,“nindex”:1,“lastExtentSize”:4864,“paddingFactor”:1.0,“flags”:1,“totalIndexSize”:8192,“indexSizes”:{“id”:8192},“确定”:1.0}什么是serverUsed?确认这一点的最简单方法是确保副本集中没有主副本,然后尝试成功执行写入。看着它失败。
coll.getStats();
enter code here