Какой из них является предпочтительным выбором Mongodump VS Mongoexport для обновления базы данных mongoDB?

мой клиент использует mongoDB 2.4 и, поскольку есть некоторые ограничения с этой версией, мы даем им возможность обновить до последней стабильной mongoDB 3.4.5.

начальное тестирование использования mongodump в MongoDB 2.4 и mongorestore в Mongodb 3.4.5 работал отлично, поскольку я вижу все импортированные коллекции.

из документации mongorestore нигде не упоминалось, что он может восстанавливать дампы из более старых версий в MongoDB.

поскольку мы не можем использовать mongorestore, могу ли я использовать"mongoexport " экспортировать данные в формате csv / json старого mongoDB 2.4 и импортировать в более новую версию mongoDB 3.4 ?

каковы возможные проблемы использования "mongoexport / mongoimport" вместо "mongodump" для обновления до более новой версии mongoDB 3.4 ?

примечание: Я полностью удалю старую версию mongoDB и установлю более новую версию в MongoDB

3 ответов


Mongodump и Mongorestore лучше, потому что:

  1. Они бегут быстрее
  2. они сохраняют некоторые форматы данных лучше, чем mongoexport и mongoimport, потому что данные не переводятся из BSON в JSON и обратно.

Как описано в MongoDB Docs on MongoImport:

предупреждение
Избегайте использования mongoimport и mongoexport для полного резервного копирования экземпляра. Они не надежно сохраните все богатые типы данных BSON, поскольку JSON может представлять только подмножество типов, поддерживаемых BSON. Используйте mongodump и mongorestore, как описано в MongoDB методы резервного копирования для такого рода функций.

кроме того, будьте очень осторожны с обновлением с помощью mongorestore; только потому, что данные восстанавливаются, как это было ранее, это не означает, что новая версия MongoDB может работать с ним. Например, последовательность изменений в авторизации модель после v2.4 что означает, что вы необходимо сначала обновить до v2.6, и только потом в v3.0. В каждой основной версии есть похожие структурные изменения, поэтому рекомендуется, чтобы вы обновление поэтапно, одна основная версия за раз то есть

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

с http://www.dba86.com/docs/mongo/2.4/core/import-export.html, mongoexport поддерживается с версии 2.4. Следовательно, это должен быть правильный инструмент для этого. Но все же в документе есть предупреждение.

предупреждение: Избегайте использования mongoimport и mongoexport для полного резервного копирования экземпляра. Они не надежно сохраняют все богатые данные BSON типы, поскольку JSON может представлять только подмножество поддерживаемых типов на зубров. Использовать mongodump и mongorestore, как описано в резервной копии MongoDB Методы для такого рода функциональности.

надеюсь, что это поможет!!!!


оба инструмента (по умолчанию) будут просто ходить по индексу _id, чтобы получить данные, а затем записать их на диск. Итак, да, оба инструмента будут аналогично влиять на ваш рабочий набор, поэтому я обычно рекомендую запускать их против вторичного (предпочтительно скрытого вторичного, если это возможно). Я предполагаю, что вы ищете эквивалент mongodump опции --fields из mongoexport только для сброса определенных полей. Параметр query можно использовать для фильтрации результатов, но его нельзя использовать с проекция (для выбора возвращаемых полей)-это запрос объекта, который отслеживается в TOOLS-28, но еще не запланирован.