WiredTigerを使用してMongoDB 2.6を3.0に移行する方法


9

MongoDB 3.0は、wiredTigerメモリとディスク領域の使用量を大幅に削減するという新しいストレージエンジンを導入しています。

私のDBは現在約2,000万のオブジェクトにあり、最大で約70GBのRAMを使用しているので、この更新はハードウェアの更新を延期する適切なタイミングで行われます。

MongoDB 2.6の既存のインストールを3.0に移行すると同時に、wiredTigerのメリットをどのようにして得ますか?

ドキュメントは、MongoDBの起動を妨げる起動エラーを引き起こすオプションについて言及しています。また、ファイルの場所がUbuntu(Server 14.04 LTS)の場所と一致しません。


これは単一のインスタンスですか(レプリカセットではありません)?
Adam C

回答:


15

デフォルトのインストールでは、構成ファイルはにあり/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/

レプリカセットとシャードクラスタの一部のaditionalステップがあることに注意してください。http://docs.mongodb.org/v3.0/release-notes/3.0-upgrade/?_ga=1.86531032.1131483509.1428671022#change-replica-set-storage -engine-to-wiredtiger


1
注:YAML構成ファイルのより完全な例については、DBAに関する私の回答を参照してください:dba.stackexchange.com/a/82592/6441
Adam C

1

古い構成ファイル形式を使用して、私は成功しました:

storageEngine = wiredTiger

私が投稿を書いたときに正確に試してみたところ、エラーが発生しました(思い出せません)。
Emanuel Ey 2015年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.