如何更改 MongoDB 中的副本集协议版本。

如何更改 MongoDB 中的副本集协议版本。

我正在尝试将副本集协议更改为 pv1。我有 5 个副本集服务器 Mongo 3.6。我正在使用此处的文档https://docs.mongodb.com/manual/reference/replica-set-protocol-versions/做出这些改变。

文档非常清晰,操作似乎很简单https://docs.mongodb.com/manual/reference/replica-set-protocol-versions/#modify-replica-set-protocol-version。在主服务器上我执行了以下三个命令:

cfg = rs.conf();
cfg.协议版本=1;
rs.重新配置(cfg);

做完之后我得到了:

rs.重新配置(cfg);
{
    “确定” :1,
    “operationTime”:时间戳(1531825299,3),
    “$集群时间”:{
        “clusterTime”:时间戳(1531825299,3),
        “签名” : {
            “哈希”:BinData(0,“AIwmnD882cUdRgKYgGsRZg9Z4q0=”),
            “keyId”:NumberLong(“6577197549977862145”)
        }
    }
}

一切看起来都很好,但重新登录 mongo 后我可以看到这一点:

MongoDB shell 版本 v3.6.6
连接到:mongodb://127.0.0.1:27017
MongoDB服务器版本:3.6.6
服务器有启动警告:
2018-07-10T22:50:39.164+0200 我 REPL [replexec-0]
2018-07-10T22:50:39.164+0200 I REPL [replexec-0] ** 警告:此副本集配置了协议版本 0。
2018-07-10T22:50:39.164+0200 I REPL [replexec-0] ** 此协议版本已弃用并可能被删除
2018-07-10T22:50:39.164+0200 I REPL [replexec-0] ** 在未来版本中。

我不知道我做错了什么?有什么办法可以解决此操作无效的问题吗?

答案1

您需要在 rs.reconfig(cfg) 之后重新启动 mongod 服务。重新配置将更改协议版本,但重新启动后它将生效。首先,您需要重新启动辅助服务器,然后对主服务器进行降级并重新启动它。之后您将不再看到警告。

答案2

在 mongodb 中,警告是在启动期间生成的,并将显示在 mongo shell 中,直到重新启动。这是历史警告,您可以看到生成警告的实际时间戳。

您可能只想重新启动 mongodb 来隐藏这些历史警告。

但是不需要重新启动 mongodb 来更改协议版本,因为复制配置在之后立即应用rs.reconfig()

相关内容