Linux
如何在 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。在 PRIMARY 伺服器上,我執行了這三個命令:
cfg = rs.conf(); cfg.protocolVersion=1; rs.reconfig(cfg);
完成後我得到:
rs.reconfig(cfg); { “好”:1, "operationTime" : 時間戳(1531825299, 3), “$clusterTime”:{ "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] ** 在未來的版本中。
我不知道我做錯了什麼?任何幫助為什麼此操作不起作用?
在 rs.reconfig(cfg) 之後需要重啟 mongod 服務。重新配置將更改協議版本,但在重新啟動後將處於活動狀態。首先,您需要重新啟動輔助伺服器,然後對主伺服器進行降級並重新啟動它。之後,您將不再看到警告。
在 mongodb 中,警告會在啟動期間生成,並將顯示在 mongo shell 中,直到重新啟動。這是歷史警告,您可以看到它們生成時的實際時間戳。
您可能只想重新啟動 mongodb 以隱藏這些歷史警告。
但是不需要重新啟動 mongodb 來更改協議版本,因為複製配置在之後立即應用
rs.reconfig()
。