2017-03-01 49 views
0

我已經升級了MongodDB sharded集羣,其中有兩個副本集,從3.2到3.4。當前的存儲引擎是MMAPv1。成功升級所有輔助,主要,配置服務器和mongos到3.4後,當我使用以下命令運行配置服務器時。將Sharded Cluster從3.2升級到3.4時的讀取關注度爲多數錯誤級別

sudo mongod --configsvr

我不斷收到以下錯誤。

SHARDING [碎片註冊表重裝]碎片註冊表的定期重裝失敗::由:: 115導致無法從配置服務器獲取更新碎片列表,因爲當前存儲引擎不支持多數readConcerns;將在30秒後重試

而且我也無法將mongos與配置服務器連接。當我嘗試使用連接它下面的命令

須藤mongos --configdb [IP-的-MY-配置服務器]:27019

它給了我下面的錯誤。

BADVALUE:configdb只支持副本集的連接字符串

我想mongos是無法連接到配置服務器由於配置服務器上的大多數readConcerns錯誤。

MongoDB手冊中說 「當從副本集配置服務器讀取時,MongoDB 3.4使用」多數「讀取關注級別。」

,並使用「多數」的讀的關注程度,WiredTiger must be used as storage engine.

因此,似乎我已經改用WiredTiger存儲引擎,使其工作。但是,當我要切換到第二個副本集成員的WiredTiger存儲引擎,根據手冊

"This procedure completely removes a secondary replica set member’s data"

所以我堅持半途而廢。情況是

  1. 配置服務器給出關於大多數readConcerns的錯誤。
  2. 我必須切換到WiredTiger才能擺脫它。
  3. 切換到WiredTiger將從輔助成員中刪除數據。
  4. 由於配置服務器錯誤,在切換到WiredTiger過程期間,數據不會被複制回次要成員,並最終導致丟失所有數據(如果我錯了,請更正)。

的問題是:

  1. 我可以做的MongoDB 3.4使用的「本地」讀關懷水平從副本集中配置服務器讀取時?
  2. 如何在不丟失數據的情況下切換到WiredTiger引擎?
+0

是否可以選擇降級到v3.2,遷移到WiredTiger,然後升級? –

+0

是的,如果找不到其他解決方案,可以這樣做。 – umarxe

回答

0

你可以遷移副本中的每個節點設置as if it was a standalone,通過使用mongodump備份數據,與WiredTiger和空白數據目錄重新啓動,然後使用mongorestore來填充新的數據庫。

這通常不推薦用於副本集節點,但僅僅是因爲它更容易擦除輔助節點上的數據並讓它與其他節點重新同步。這樣做可以很好地工作,但涉及轉儲和恢復工具的一些更復雜的工作。