无法从3.6升级Mongodb副本集->;4.0(导线版本a不兼容)

无法从3.6升级Mongodb副本集->;4.0(导线版本a不兼容),mongodb,Mongodb,我有一个在3.6版中运行的高效mongodb副本集(3个成员)。正如标题所预期的,我想升级到4.0版。我已按照这里的说明: 因此setFeatureCompatibilityVersion设置为“3.6”,副本集协议版本已设置为pv1。 说明包括关闭成员、升级二进制文件、重新启动并重新连接到副本集。一个接一个地访问每个副本集成员 我对这个工作流程做了一些修改。我不想关闭一个成员,只想在集合中添加第四个运行版本4.0的成员。初始同步完成后,我想从集合中删除一个旧成员。然后添加下一个运行版本4.0的

我有一个在3.6版中运行的高效mongodb副本集(3个成员)。正如标题所预期的,我想升级到4.0版。我已按照这里的说明: 因此setFeatureCompatibilityVersion设置为“3.6”,副本集协议版本已设置为pv1。 说明包括关闭成员、升级二进制文件、重新启动并重新连接到副本集。一个接一个地访问每个副本集成员

我对这个工作流程做了一些修改。我不想关闭一个成员,只想在集合中添加第四个运行版本4.0的成员。初始同步完成后,我想从集合中删除一个旧成员。然后添加下一个运行版本4.0的成员,删除下一个旧成员,依此类推

当我从3.4版升级到3.6版时,我已经使用了这种技术,而且效果很好

现在真正的问题是:

我将版本为4.0的第四个成员添加到版本为的3.6副本集中
rs.add(“serverip”)
并命令sad“ok”。 但是,当我查找副本集状态时,新成员为“(不可访问/健康)”,最后一条心跳消息sad“服务器最小和最大有线版本与客户端最小有线版本(6,6)不兼容(7,7)”


我做错了什么?我找不到关于“wire verions”以及它们受什么影响或配置的很多信息。那么,如何将现有副本集中的这些wire版本“升级”到7,或者如何强制新版本4.0的成员使用版本6?

wire版本基本上是表示服务器版本的不同方式。6是3.6,7是4.0

消息告诉您的是,客户机(我假设服务器中与其他节点对话的内部客户机)要求服务器正好是3.6

这对我来说有点奇怪,在二进制替换过程中,您应该有一些wire版本为6的节点和一些wire版本为7的节点。也许FCV的解释有所不同


在任何情况下,都不能添加4.0节点,因为它的FCV设置为4.0,而所有其他节点的FCV设置为3.6。如果要添加新节点,应使用3.6二进制文件将其添加,在RS处于3.6版本时将数据同步到该节点,然后按照说明对额外节点执行升级。

或者,您可以将4.0节点作为独立节点启动(不带replset配置选项),手动将其FCV设置为“3.6”,然后关闭,使用副本集信息重新配置,然后重新启动。这将允许3.6节点与之通信。