![如何更改 MongoDB 中的副本集协议版本。](https://linux22.com/image/724684/%E5%A6%82%E4%BD%95%E6%9B%B4%E6%94%B9%20MongoDB%20%E4%B8%AD%E7%9A%84%E5%89%AF%E6%9C%AC%E9%9B%86%E5%8D%8F%E8%AE%AE%E7%89%88%E6%9C%AC%E3%80%82.png)
我正在尝试将副本集协议更改为 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()
。