我正在使用 pymongo 运行大数据更新。为了运行更新,使用 collection.find_one(unique criteria)
找到单个记录,进行更改,批量更新,最后使用 db.collection.save([long list of records to save])
分块发送
在我的本地机器(运行 1.6.3)上,导入工作正常。
在比我的本地机器快得多的远程服务器(运行 1.6.0)上,我可以很好地通过一部分插入,但是在查找原始记录时会突然出现以下错误:
connection = Connection(...)
...
raise AutoReconnect("could not find master/primary")
pymongo.errors.AutoReconnect: could not find master/primary
我可以通过的记录数量有所不同,但不是随机的。
起初我以为我遇到了连接限制。每次查找记录后,我开始手动关闭连接:
collection.database.connection.disconnect()
这没有解决问题。我在正确的轨道上吗?
最佳答案
所以这里有几个潜在的问题:
raise AutoReconnect("could not find master/primary")
pymongo.errors.AutoReconnect: could not find master/primary
该错误表明现有连接以某种方式无效。发生这种情况的原因有很多。发生这种情况的最常见原因是副本集的主节点已下台或发生故障。在这种情况下,您的代码需要:
你在做这个吗?
你在运行副本集还是主/从?
您对这些服务器的性能有任何跟踪吗?
他们有网络问题吗?
他们在转换角色吗?
异常“发生”在哪里?它来自连接本身还是来自保存命令?
在撰写本文时,1.6.0 是 MongoDB 的一个非常旧的版本。在随后的 1.6.x 版本和 1.7.x 版本中修复了多个复制错误。 (我们已经在 1.8.1rc-0)
我将首先查看您的服务器发生了什么,但这很可能会引导您走上升级之路。
关于mongodb - Mongo 在数据查找期间找不到 master,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5533501/