Ответ 1
Хорошо, я узнаю, что я делаю неправильно:
Я делал
mongorestore --db Gen --drop --dbpath dump/Gen
Но без -dbpath он работает отлично!
mongorestore --db Gen --drop dump/Gen
Спасибо всем!
Я новичок в MongoDB, и мне сложно создать резервную копию локальной базы данных и восстановить ее на моем сервере. Я нашел ссылку на веб-сайте Mongo: http://www.mongodb.org/display/DOCS/Import+Export+Tools, но у меня все еще есть проблемы с восстановлением.
Когда я делаю резервное копирование, я вызываю
mongodump --db Gen
Затем я вижу, что все коллекции являются дампами в папке /bin/dump/Gen
Я скопирую-скопирую с локального на сервер в той же папке, что и вызов
mongorestore --db Gen --drop --dbpath dump/Gen
Но я получаю следующее:
Error : root directory must be a dump of a single database when specifying a db name with --db
Хорошо, я узнаю, что я делаю неправильно:
Я делал
mongorestore --db Gen --drop --dbpath dump/Gen
Но без -dbpath он работает отлично!
mongorestore --db Gen --drop dump/Gen
Спасибо всем!
Я думаю, что ваша структура папок может быть испорчена, когда вы пытаетесь ее переместить. Например, это работает для меня:
$ ./mongodump --db Gen
$ ./mongorestore --db Gen --drop dump/Gen/
Можете ли вы попытаться не перемещать каталог дампа и восстановить из /bin/dump/Gen?
Указанный вами каталог должен содержать в нем файлы .bson, например,
$ ls /bin/dump/Gen
foo.bson bar.bson baz.bson
Дополнительная заметка для тех, кто не хочет раздражаться корневым каталогом ошибок, должен быть дампом одной базы данных при указании имени db с -db "
При указании --db и without --collection (восстановление целой базы данных): - данный путь должен быть путь к каталогу - каталог не должен содержать других файлов, кроме .bson или .json. Мне потребовалось некоторое время, чтобы понять, что скрытая папка .svn(если вы используете SVN) испортит script
Это то, что в конечном итоге работает для меня (mydb
- это имя моей базы данных):
mongorestore --drop -db mydb mydbbackup/mydb/
После моего mongodump
:
mongodump -d mydb -o mydbbackup
Пример:
./mongorestore -d db -c mycollection dump/db
приведет к следующей ошибке:
ERROR: ERROR: root directory must be a dump of a single collection
ERROR: when specifying a collection name with --collection
вы можете удалить параметр -c, чтобы выполнить эту ошибку. В случае использования dump/db укажите db, но не коллекцию.