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).
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.
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/
Arrêtez le service Mongodb
Sudo service mongod stop
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/
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
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/
Effectuez éventuellement une sauvegarde du journal:
Sudo mv /var/log/mongodb/mongod.log /var/log/mongodb/mongod_26.log
Redémarrez mongodb
Sudo service mongod start
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
En utilisant le ancien format de fichier de configuration, j'ai eu du succès avec:
storageEngine = wiredTiger