2017-06-15 1 views
1

Mon client utilise mongoDB 2.4 et comme il y a quelques limitations avec cette version, nous leur avons donné la possibilité de passer à mongoDB 3.4.5.Lequel est le choix préféré Mongodump VS Mongoexport pour la mise à niveau de la base de données mongoDB?

Le test initial de l'utilisation de mongodump dans MongoDB 2.4 et mongorestore dans Mongodb 3.4.5 a bien fonctionné car je peux voir toutes les collections importées. De la documentation mongorestore, il n'a été mentionné nulle part qu'il peut restaurer les dumps à partir d'anciennes versions de mongoDB. Comme nous ne pouvons pas utiliser le mongorestore, puis-je utiliser "mongoexport" pour exporter les données au format csv/json de l'ancien mongoDB 2.4, et l'importer dans une nouvelle version de mongoDB 3.4?

Quels sont les problèmes possibles d'utilisation de "mongoexport/mongoimport" au lieu de "mongodump" pour mettre à niveau vers une nouvelle version de mongoDB 3.4?

NOTE: Je vais supprimer la version plus ancienne de MongoDB complètement et installera la nouvelle version de MongoDB

Répondre

4

Mongodump et Mongorestore sont mieux parce que:

  1. Ils courent plus vite
  2. Ils conservent certains formats de données mieux que mongoexport et mongoimport, car les données ne se traduit pas de BSON en JSON et le dos.

Comme décrit dans le MongoDB Docs on MongoImport:

AVERTISSEMENT
Évitez d'utiliser mongoimport et mongoexport pour les sauvegardes de production d'instance complète. Ils ne conservent pas de manière fiable tous les types de données BSON riches, car JSON ne peut représenter qu'un sous-ensemble des types pris en charge par BSON. Utilisez mongodump et mongorestore comme décrit dans Méthodes de sauvegarde MongoDB pour ce type de fonctionnalité.

En outre, faites très attention à la mise à niveau en utilisant mongorestore; Ce n'est pas parce que les données sont restaurées comme précédemment que cela signifie que la nouvelle version de MongoDB peut fonctionner avec. Par exemple, il y avait une séquence de changements au modèle d'autorisation après v2.4, ce qui signifie que vous must first upgrade to v2.6, and only then to v3.0. Il y a même des changements structurels à chaque version majeure, il est donc recommandé que vous upgrade stepwise, one major version at a time-à-dire

  1. v2.4 -> v2.6
  2. v2.6 -> v3.0
  3. v3.0 - > v3.2
  4. v3.2 -> v3.4
+0

Cela devrait être le processus réel que vous avez suggéré, mais quels seront les problèmes possibles si j'utilise mongoexport et mongoimport :) si le temps et la taille ne sont pas le problème. –

+0

J'ai édité la réponse pour donner plus d'informations, et un lien vers le manuel MongoDB. –

+0

solution: Pas moyen facile de mettre à niveau :( –

-4

Les deux outils (par défaut) juste marcher l'indice _id pour récupérer les données, puis l'écrire sur le disque. Donc, oui, les deux outils auront un impact similaire sur votre jeu de travail, c'est pourquoi je recommande généralement de les exécuter contre un secondaire (de préférence un secondaire caché si possible). Je suppose que vous recherchez un équivalent mongodump de l'option --fields de mongoexport pour seulement vider des champs spécifiques. L'option de requête peut être utilisée pour filtrer les résultats, mais elle ne peut pas être utilisée avec une projection (pour sélectionner les champs renvoyés) - il s'agit d'une demande de fonctionnalité qui est suivie dans TOOLS-28 mais qui n'est pas encore planifiée.

+1

vous avez copié le texte exact à partir de ce lien https://dba.stackexchange.com/questions/107549/backup-with-mongoexport-or-mongodump, mon cas d'utilisation est différent, peut-être que je n'ai pas transmis le message correctement, ma question est de savoir lequel devrait être le bon outil pour exporter la base de données de l'ancienne version et importer dans la nouvelle version de mongoDB. –

+0

Je pense que vous trouverez mieux et plus vite mongodump –

0

De http://www.dba86.com/docs/mongo/2.4/core/import-export.html, mongoexport est pris en charge à partir de la version 2.4. Par conséquent, il devrait être le bon outil pour cela. Mais le document a également un message d'avertissement.

Avertissement: Évitez d'utiliser mongoimport et mongoexport pour les sauvegardes de production en instance complète. Ils ne conservent pas de manière fiable tous les types de données BSON riches , car JSON ne peut représenter qu'un sous-ensemble des types pris en charge par BSON . Utilisez mongodump et mongorestore comme décrit dans MongoDB Backup Méthodes pour ce type de fonctionnalité.

Espérons que ça aide !!!!

+0

J'ai mis à jour la question. –