如何使用 WiredTiger 將 MongoDB 2.6 遷移到 3.0

如何使用 WiredTiger 將 MongoDB 2.6 遷移到 3.0

MongoDB 3.0引進了一個新的儲存引擎,wiredTiger它大大減少了記憶體和磁碟空間的使用。

由於我的資料庫目前有約 2000 萬個物件並使用了約 70GB 的 RAM,因此此更新恰逢推遲硬體更新的時機。

如何將 MongoDB 2.6 的現有安裝遷移到 3.0,同時獲得wiredTiger 的優勢?

文件提到了導致啟動錯誤的選項,從而阻止 MongoDB 啟動。此外,檔案位置與 Ubuntu (Server 14.04 LTS) 中的位置不符。

答案1

在預設安裝中,設定檔位於/etc/mongod.conf. MongoDB 文件沒有提到的是,當遷移到 WiredTiger 時,我們還需要將設定檔更新為 2.6 中引入的新 YAML 格式。
據我所知,該engine選項僅在新的配置格式中可用。
從舊儲存引擎遷移包括建立資料庫轉儲、關閉 mongodb、變更設置,然後將轉儲匯入新儲存引擎。

  1. 建立備份。嚴重地。我們需要一個資料庫轉儲,然後將其導入到新的資料庫引擎中:

    mongodump -d db_name /backup/path/  
    
  2. 停止mongodb服務

    sudo service mongod stop  
    
  3. 將資料從目前位置移動到其他位置(如果資料目錄包含舊儲存引擎產生的文件,MongoDB 將不會啟動)。

    sudo mv /var/lib/mongodb /var/lib/mongodb_26/
    
  4. 將 MongoDB 升級到版本 3.0(從http://docs.mongodb.org/v3.0/tutorial/install-mongodb-on-ubuntu/):

    sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 7F0CEB10  
    echo "deb http://repo.mongodb.org/apt/ubuntu "$(lsb_release -sc)"/mongodb-org/3.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.0.list  
    sudo apt-get update  
    sudo apt-get install mongodb-org mongodb-org-server mongodb-org-shell mongodb-org-mongos mongodb-org-tools  
    
  5. 將設定檔從舊的(2.6 之前)轉換為目前的 YAML 格式。最低限度是:

    storage:  
        dbPath: "/var/lib/mongodb"  
        engine: wiredTiger  
    
    systemLog:  
       destination: file  
       path: "/var/log/mongodb/mongod.log"  
       logAppend: true  
    
    net:  
        bindIp: 127.0.0.1  
        port: 27017  
        # Enable the HTTP interface (Defaults to port 28017).  
        http:  
            enabled: false  
    

    確保沒有保留舊格式的行,否則 MongoDB 將無法啟動。

    設定檔的完整文件位於:http://docs.mongodb.org/v3.0/reference/configuration-options/

  6. (可選)備份日誌:

    sudo mv /var/log/mongodb/mongod.log /var/log/mongodb/mongod_26.log
    
  7. 重啟mongodb

    sudo service mongod start
    
  8. 載入備份以將資料轉換到新的儲存引擎

    mongorestore /backup/location
    

檢查所有資料都沒問題後,可以刪除舊資料格式的目錄

sudo rm -r /var/lib/mongodb_26/

請注意,對於副本集和分片集群,還有一些額外的步驟:http://docs.mongodb.org/v3.0/release-notes/3.0-upgrade/?_ga=1.86531032.1131483509.1428671022#change-replica-set-storage-engine-to-wiredti

答案2

使用舊的設定檔格式,我取得了成功:

儲存引擎=wiredTiger

相關內容