【问题标题】:Cannot upgrade Mongodb Replica Set from 3.6 -> 4.0 (Wire versions a incompatible)无法从 3.6 -> 4.0 升级 Mongodb 副本集(Wire 版本不兼容)
【发布时间】:2020-12-29 07:54:37
【问题描述】:

我有一个在 3.6 版中运行的高效 mongodb 副本集(3 个成员)。正如标题所料,我想升级到 4.0 版。我已按照此处的说明进行操作: https://docs.mongodb.com/manual/release-notes/4.0-upgrade-replica-set/ 因此 setFeatureCompatibilityVersion 设置为“3.6”,副本集协议版本已设置为 pv1。 关闭成员,升级二进制文件,重新启动并重新连接到副本集的说明很遗憾。与每个副本集成员一一对应。

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

当我从 3.4 升级到 3.6 时,我已经使用过这种技术,并且效果很好。

现在真正的问题:

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

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

【问题讨论】:

    标签: mongodb


    【解决方案1】:

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

    消息告诉您的是客户端(我假设服务器中的内部客户端与其他节点通信)要求服务器正好是 3.6。

    这对我来说有点奇怪,因为在二进制替换期间,您应该有一些带有线版本 6 的节点和一些带有 7 版的节点。也许 FCV 以某种方式得到了不同的解释。

    无论如何,您无法添加 4.0 节点,因为它的 FCV 设置为 4.0,而您所有其他节点的 FCV 为 3.6。如果您想添加一个新节点,您应该使用 3.6 二进制文件添加它,在您的 RS 处于 3.6 时将数据同步到它,然后使用额外节点按照所述说明执行升级。

    【讨论】:

    • 另外,您可以将 4.0 节点作为独立节点启动(没有 replset 配置选项),手动将其 FCV 设置为“3.6”,然后关闭,使用副本集信息重新配置,然后重新启动。这将允许 3.6 节点与之对话。
    猜你喜欢
    • 2020-10-17
    • 2021-03-29
    • 1970-01-01
    • 2019-06-04
    • 1970-01-01
    • 2016-06-21
    • 1970-01-01
    • 2016-11-27
    • 1970-01-01
    相关资源
    最近更新 更多