1. 程式人生 > >3分鐘完成MongoDB2.6升級3.0

3分鐘完成MongoDB2.6升級3.0

mongodb 2.6升級3.0

技術分享

3分鐘完成MongoDB2.6升級3.0

前言

Part1:寫在最前

自從3.0版本起,MongoDB支持了WT存儲引擎,這個引擎相對老的MMAPv1存儲引擎來講,具有更高的壓縮比,且支持文檔級並發控制。也正因為WT的優良特性,在MongoDB3.2版本起,WT存儲引擎作為了默認存儲引擎。本文將簡述2.6升級3.0的過程和註意事項


實戰

Part1:建議和清單

限制

要升級到3.0版本,首先現有集群必須是2.6版本。如果是早期的版本,則必須先升級到2.6版本才可以升級3.0版本。如果2.6集群已經開啟了認證模式,升級前需進行authSchema 版本升級,詳見關於認證章節。

準備

在開始升級之前,請參閱MongoDB 3.0文檔中的兼容性更改,以確保您的應用程序和部署與MongoDB 3.0兼容。 在開始升級之前解決部署中的不兼容問題。

升級MongoDB之前,請先在臨時環境中測試應用程序,以確保升級順利進行

降級版本的限制

升級到3.0後,您只能降級到2.6.8或更高版本。

註意:避免重新配置包含不同MongoDB版本成員的副本集,因為MongoDB

版本中的權限驗證規則可能會有所不同。

低版本升級先決條件

要將副本集升級到3.0,所有副本集成員必須運行版本2.6 要從早期的MongoDB版本升級副本集,請先將副本集的所有成員升級到最新的2.6系列版本,然後按照以下步驟從MongoDB 2.6升級到3.0

Part2:升級過程

先升級副本集中的一個Secondary

關閉mongod實例,並用3.0二進制文件的bin目錄代替2.6二進制文件的bin目錄。

重新啟動成員並等待成員恢復到Secondary狀態,然後再升級下一個Secondary成員。 要檢查成員的狀態,請在mongo shell中發出rs.status()

stepdown副本集中的

Primary

mongo shell連接到Primary服務器並使用rs.stepDown()來降級主服務器並強制其他節點選舉新的Primary服務器。

升級Primary服務器

rs.status()顯示原Primary節點已經變為Secondary,新的PRIMARY已經被選舉出來的時候,開始升級原Primary節點:

關閉數據庫,並用3.0二進制文件的bin目錄代替2.6二進制文件的bin目錄。

啟動原Primary節點。

Part3:關於認證

authSchema

2.6版本開啟認證模式要升級3.0,必須先升級authSchema

運行authSchemaUpgrade並升級3.0後,無法降級到2.6並開啟認證模式

查看authSchema版本是不是3.0at least

use admin

db.system.version.find( { _id: "authSchema" })

升級SchemaUpgrade,復制集的話在主庫執行該命令

db.getSiblingDB("admin").runCommand({authSchemaUpgrade: 1 });

Part4:變更存儲引擎

您必須使用MongoDB 3.0或更高版本才能使用WiredTiger存儲引擎。 如果從早期版本的MongoDB升級,請參閱升級到MongoDB 3.0或升級到MongoDB 3.2的指導,然後再繼續更改存儲引擎。

在啟用新的WiredTiger存儲引擎之前,請確保所有副本集/分片集群成員至少運行MongoDB 2.6.8版,最好是3.0.0版或更高版本。副本集可以具有不同存儲引擎的成員。 因此,您可以更新成員以滾動的方式使用WiredTiger存儲引擎。 在更改所有成員使用WiredTiger之前,您可能希望在一段時間內運行混合存儲引擎。 但是,性能會因工作量而異。

configurefile中添加engine: "wiredTiger",並更換—dbpath 後重啟實例

由於dbpath是新目錄,副本集會執行initial sync進行重新同步,重新同步的時間取決於數據量的大小和網絡情況。

為使用WiredTiger存儲引擎運行的新mongod實例準備數據目錄。 mongod必須具有此目錄的讀寫權限。 您可以刪除已停止的輔助成員的當前數據目錄的內容,也可以完全創建新的目錄。

WiredTigermongod不會從使用不同的存儲引擎創建的數據文件開始。

Part5:Driver兼容性

絕大部分dirver版本只要支持3.0也支持3.2

更多driver兼容性參見:

https://docs.mongodb.com/ecosystem/drivers/driver-compatibility-reference/



Warning:

2.6升級3.0

升級後不能降級低於2.6.8版本

2.6版本開啟認證模式要升級3.0,必須先升級authSchema

運行authSchemaUpgrade並升級3.0後,無法降級到2.6並開啟認證模式





——總結——

同小版本升級來講,2.6升級3.0版本沒有什麽難度,主要在於如果您在2.6版本已經開啟了認證,那麽一定要做好authSchema的相關升級操作,並了解降級的限制。由於編寫時間也很倉促,文中難免會出現一些錯誤或者不準確的地方,不妥之處懇請讀者批評指正。



本文出自 “賀磊的技術博客” 博客,請務必保留此出處http://suifu.blog.51cto.com/9167728/1978466

3分鐘完成MongoDB2.6升級3.0