web-dev-qa-db-fra.com

Comment migrer MongoDB 2.6 vers 3.0 avec WiredTiger

MongoDB 3.0 introduit un nouveau moteur de stockage appelé wiredTiger, qui réduit considérablement l'utilisation de la mémoire et de l'espace disque.

Étant donné que ma base de données contient actuellement environ 20 millions d'objets et utilise environ 70 Go de RAM, cette mise à jour arrive au bon moment pour reporter une mise à jour matérielle.

Comment migrer une installation existante de MongoDB 2.6 vers 3.0 tout en tirant parti des avantages de wiredTiger?

La documentation fait référence à des options qui entraînent des erreurs de démarrage empêchant MongoDB de démarrer. De plus, les emplacements de fichiers ne correspondent pas à ceux d'Ubuntu (Server 14.04 LTS).

8
Emanuel Ey

Dans les installations par défaut, le fichier de configuration est à /etc/mongod.conf. La documentation de MongoDB ne mentionne pas le fait que lors de la migration vers WiredTiger, nous devons également mettre à jour le fichier de configuration vers le nouveau format YAML introduit dans la version 2.6.
Autant que je sache, l’option engine n’est disponible que dans le nouveau format de configuration.
La migration de l’ancien moteur de stockage consiste à créer un dump de base de données, à arrêter mongodb, à modifier les paramètres, puis à importer le dump dans le nouveau moteur de stockage.

  1. Créez une sauvegarde. Sérieusement. Nous avons besoin d'un vidage de base de données que nous allons ensuite importer dans le nouveau moteur de base de données:

    mongodump -d db_name /backup/path/  
    
  2. Arrêtez le service Mongodb

    Sudo service mongod stop  
    
  3. Déplacez les données de l'emplacement actuel vers un autre emplacement (MongoDB ne démarrera pas si le répertoire de données contient des fichiers générés par l'ancien moteur de stockage).

    Sudo mv /var/lib/mongodb /var/lib/mongodb_26/
    
  4. Mettez MongoDB à niveau vers la version 3.0 (à partir de 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. Convertit le fichier de configuration de l’ancien (avant la version 2.6) au format YAML actuel. Le strict minimum est:

    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  
    

    Assurez-vous qu'il ne reste aucune ligne dans l'ancien format, sinon MongoDB ne démarrera pas.

    La documentation complète du fichier de configuration se trouve à: http://docs.mongodb.org/v3.0/reference/configuration-options/

  6. Effectuez éventuellement une sauvegarde du journal:

    Sudo mv /var/log/mongodb/mongod.log /var/log/mongodb/mongod_26.log
    
  7. Redémarrez mongodb

    Sudo service mongod start
    
  8. Charger la sauvegarde pour convertir les données vers le nouveau moteur de stockage

    mongorestore /backup/location
    

Après avoir vérifié que toutes vos données sont correctes, vous pouvez supprimer le répertoire avec l'ancien format de données.

Sudo rm -r /var/lib/mongodb_26/

Notez que pour les ensembles de réplicas et les clusters partagés, il existe quelques étapes supplémentaires: http://docs.mongodb.org/v3.0/release-notes/3.0-upgrade/?_ga=1.86531032.1131483509.1428671022#change-replica -set-storage-engine-to-wiredtiger

14
Emanuel Ey

En utilisant le ancien format de fichier de configuration, j'ai eu du succès avec:

storageEngine = wiredTiger
1
unkx80