Восстановить дамп из старого монго

В настоящее время я пытаюсь восстановить монгодамп, созданный с помощью mongodb:3.4-jessie, в более новую версию mongodb:4.2.3-bionic.

Когда я пытаюсь выполнить свою команду: sudo docker exec mongo mongorestore —db=mock —gzip /mongorestore/app

Он возвращает меня с этой ошибкой:

2020-05-01T00:01:29.405+0000    the --db and --collection args should only be used when restoring from a BSON file. Other uses are deprecated and will not exist in the future; use --nsInclude instead
2020-05-01T00:01:29.406+0000    Failed: mongorestore target '/home/user1/mongorestore/app' invalid: stat /home/user1/mongorestore/app: no such file or directory
2020-05-01T00:01:29.406+0000    0 document(s) restored successfully. 0 document(s) failed to restore.

Папка app содержит BSON файлов и json.gz тоже.

Я не могу обновить старый дамп, так как это единственное, что осталось, и очень хочется использовать более новую версию монго.

Большое спасибо!


person Guillaume Levesque    schedule 01.05.2020    source источник


Ответы (1)


Ваша команда была заблокирована из-за проблем, прежде чем она смогла попытаться восстановить данные в более новую версию mongodb.

  • Вы запускаете mongorestore внутри контейнера докеров, но каталог входных данных /mongorestore/app, похоже, не находится внутри контейнера (если только вы не смонтировали его на предыдущем шаге, не показанном здесь, и указали неверный путь к mongorestore). Вы можете использовать параметры --mount или --volume команды запуска Docker для монтирования каталогов хоста в контейнер. Затем передайте путь внутри контейнера команде mongorestore. См. команду запуска docker.
  • mongorestore предупреждает об этом использовании параметра --db, но неясно, связано ли это с тем, что он не может найти каталог входных данных, или вместо этого ему требуется параметр --nsInclude. См. документацию по команде mongorestore.
  • Вам не нужно использовать sudo с docker exec, и это может вызвать проблемы с правами доступа к смонтированным выходным файлам. Команда mongorestore тоже не должна нуждаться в sudo, но если я ошибаюсь, напишите docker exec mongo sudo mongorestore ....
  • Документы mongodump и mongorestore предполагают, что параметр --gzip предполагает сжатие всех файлов, а не только некоторых из них. Возможно, он замечает расширения имени файла .gz каждого файла, чтобы решить, распаковывать ли его, но в документах не говорится, что он поддерживает этот случай.

Бьюсь об заклад, mongorestore может восстановить файлы BSON из более старой версии. Этот формат файла должен быть очень стабильным.

person Jerry101    schedule 14.04.2021