Linux

如何在 MongoDB 中更改副本集協議版本。

  • June 5, 2020

我正在嘗試將副本集協議更改為 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()

引用自:https://serverfault.com/questions/922268