Mongorestore в другую базу данных
В MongoDB можно ли сбросить базу данных и восстановить содержимое в другую базу данных? Например, например:
mongodump --db db1 --out dumpdir
mongorestore --db db2 --dir dumpdir
Но это не сработает. Вот сообщение об ошибке:
создание списка коллекций для восстановления из dumpdir dir
не знаю, что делать с подкаталогом "dumpdir/db1", пропуская...
сделать
Ответы
Ответ 1
Вам нужно фактически указать в каталоге "имя базы данных" в пределах выходного каталога из предыдущего дампа:
mongorestore -d db2 dumpdir/db1
И обычно just <path> отлично в качестве позиционного аргумента, а не с -dir
, который нужен только тогда, когда "вне позиции" i.e "находится в середине списка аргументов".
p.s. Для архивного файла резервной копии (проверено с помощью mongorestore v3.4.10)
mongorestore --gzip --archive=${BACKUP_FILE_GZ} --nsFrom "${DB_NAME}.*" --nsTo "${DB_NAME_RESTORE}.*"
Ответ 2
В дополнение к ответу Blakes Seven, если ваши базы данных используют аутентификацию, я включил эту опцию для работы с опцией --uri
, для которой требуется последняя версия mongo (> 3.4.6):
mongodump --uri="mongodb://$sourceUser:[email protected]$sourceHost/$sourceDb" --gzip --archive | mongorestore --uri="mongodb://$targetUser:[email protected]$targetHost/$targetDb" --nsFrom="$sourceDb.*" --nsTo="$targetDb.*" --gzip --archive