【发布时间】:2020-10-13 22:25:50
【问题描述】:
希望你们一切都好。
我有两个节点的副本集:
messagesdbvirtual:SECONDARY> rs.status()
{
"set" : "messagesdbvirtual",
"date" : ISODate("2020-06-23T18:42:24.820Z"),
"myState" : 2,
"term" : NumberLong(1),
"syncingTo" : "messagesdb1:27017",
"syncSourceHost" : "messagesdb1:27017",
"syncSourceId" : 0,
"heartbeatIntervalMillis" : NumberLong(2000),
"majorityVoteCount" : 2,
"writeMajorityCount" : 2,
"optimes" : {
"lastCommittedOpTime" : {
"ts" : Timestamp(1592937734, 1),
"t" : NumberLong(1)
},
"lastCommittedWallTime" : ISODate("2020-06-23T18:42:14.862Z"),
"readConcernMajorityOpTime" : {
"ts" : Timestamp(1592937734, 1),
"t" : NumberLong(1)
},
"readConcernMajorityWallTime" : ISODate("2020-06-23T18:42:14.862Z"),
"appliedOpTime" : {
"ts" : Timestamp(1592937734, 1),
"t" : NumberLong(1)
},
"durableOpTime" : {
"ts" : Timestamp(1592937734, 1),
"t" : NumberLong(1)
},
"lastAppliedWallTime" : ISODate("2020-06-23T18:42:14.862Z"),
"lastDurableWallTime" : ISODate("2020-06-23T18:42:14.862Z")
},
"lastStableRecoveryTimestamp" : Timestamp(1592937704, 1),
"lastStableCheckpointTimestamp" : Timestamp(1592937704, 1),
"members" : [
{
"_id" : 0,
"name" : "messagesdb1:27017",
"health" : 1,
"state" : 1,
"stateStr" : "PRIMARY",
"uptime" : 176458,
"optime" : {
"ts" : Timestamp(1592937734, 1),
"t" : NumberLong(1)
},
"optimeDurable" : {
"ts" : Timestamp(1592937734, 1),
"t" : NumberLong(1)
},
"optimeDate" : ISODate("2020-06-23T18:42:14Z"),
"optimeDurableDate" : ISODate("2020-06-23T18:42:14Z"),
"lastHeartbeat" : ISODate("2020-06-23T18:42:23.544Z"),
"lastHeartbeatRecv" : ISODate("2020-06-23T18:42:23.865Z"),
"pingMs" : NumberLong(0),
"lastHeartbeatMessage" : "",
"syncingTo" : "",
"syncSourceHost" : "",
"syncSourceId" : -1,
"infoMessage" : "",
"electionTime" : Timestamp(1592761269, 2),
"electionDate" : ISODate("2020-06-21T17:41:09Z"),
"configVersion" : 2
},
{
"_id" : 1,
"name" : "messagesdb2:27017",
"health" : 1,
"state" : 2,
"stateStr" : "SECONDARY",
"uptime" : 184894,
"optime" : {
"ts" : Timestamp(1592937734, 1),
"t" : NumberLong(1)
},
"optimeDate" : ISODate("2020-06-23T18:42:14Z"),
"syncingTo" : "messagesdb1:27017",
"syncSourceHost" : "messagesdb1:27017",
"syncSourceId" : 0,
"infoMessage" : "",
"configVersion" : 2,
"self" : true,
"lastHeartbeatMessage" : ""
}
],
"ok" : 1,
"$clusterTime" : {
"clusterTime" : Timestamp(1592937734, 1),
"signature" : {
"hash" : BinData(0,"AAAAAAAAAAAAAAAAAAAAAAAAAAA="),
"keyId" : NumberLong(0)
}
},
"operationTime" : Timestamp(1592937734, 1)
}
但是,当我尝试使用 MongoClient 列出种子时,我没有看到:
In [81]: import newpymongo
In [82]: newpymongo.version
Out[82]: '3.10.1'
In [83]: client = newpymongo.MongoClient("messagesdb1.virtual.ninternal.com:27017", replicaSet="messagesdbvirtual")
In [84]: client
Out[84]: MongoClient(host=[u'messagesdb1.virtual.ninternal.com:27017'], document_class=dict, tz_aware=False, connect=True, replicaset=u'messagesdbvirtual')
In [85]: client.nodes
Out[85]: frozenset()
In [86]: client.nodes
Out[86]: frozenset()
在没有replicaSet 参数的情况下创建的客户端会看到一个节点:
In [87]: client = newpymongo.MongoClient("messagesdb1.virtual.ninternal.com:27017")
In [88]: client.nodes()
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-88-93c215ff96d9> in <module>()
----> 1 client.nodes()
TypeError: 'frozenset' object is not callable
In [89]: client.nodes
Out[89]: frozenset({(u'messagesdb1.virtual.ninternal.com', 27017)})
我应该在哪里进一步寻找任何建议?谢谢。
更新:问题是主机名发现。见@D。 SM的评论了解详情。
【问题讨论】:
-
如果您通过已建立的连接进行更改,是否写入两个副本集节点?在其中一个上?
-
如果我正确理解了您的链接,您是使用 mongo shell 插入的,而不是使用客户端。
-
对不起。来自 pymongo 客户端:gist.github.com/psihonavt/b83d45682613ab8c5703996e15d165fc
-
见github.com/p-mongo/mongodb-faq#replica-set-node-reachability。您的主机名在 rs 配置和客户端配置之间是不同的。
标签: mongodb pymongo pymongo-3.x