尝试查询分片集合时,在我的mongos日志中出现以下错误。
ns: database.coll could not initialize cursor across all shards because :
stale config detected for ns: database.coll ParallelCursor::_init @
rs_a/hostA:27018,hostB:27018 attempt: 0
错误源自运行mongos的应用程序服务器,该服务器从三个分布式配置服务器加载其配置。 mongo集群本身有两个分片,每个分片都有一个三元副本集。该错误伴随着严重降低的性能。
运行Mongo 2.0.1并使用java驱动程序。
答案 0 :(得分:0)
你是否只看到1个mongos的错误? 那个mongos,你看到所有副本集还是只有一个错误?
根据这些答案,您可以缩小问题范围。 如果您觉得只有少数进程出错,请尝试重新启动它们或发出db.adminCommand(“flushRouterConfig”)
答案 1 :(得分:0)
经过大量的故障排除后,此问题的最终解决方案是重新启动所有配置服务器。不幸的是,flushRouterConfig会尝试重新连接,但会返回相同的陈旧配置错误消息。
请注意,由于分片配置服务器不是复制副本,因此当一台服务器关闭时,它们将变为只读,并且不会接受任何块更改信息。
我希望我能更深入地了解这个问题。似乎肯定是mongos或2.0.1的配置服务器中的错误,因为我的副本设置/分片没有经历拓扑更改。