2010-10-07 82 views
36

我是新来的MongoDB,我很难备份我的本地数据库,并在我的服务器上恢复它。我在Mongo的网站上找到了链接:http://www.mongodb.org/display/DOCS/Import+Export+Tools,但我仍然遇到了恢复问题。Mongorestore的分贝造成我的麻烦

当我做我的备份我打电话

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

+0

什么,如果你改变目录到转储/根和运行它再次用'--dbpath .' – luckytaxi 2010-10-07 21:49:21

+0

你的意思是mongodump --db Gen --dbpath dump/Gen?不起作用... – VinnyG 2010-10-08 14:44:35

回答

41

好吧,我发现我做错了什么:

我是做

mongorestore --db Gen --drop --dbpath dump/Gen 

但没有--dbpath它工作得很好!

mongorestore --db Gen --drop dump/Gen 

谢谢大家!

+1

值得注意的是,'--dbpath'设置** live数据库**的路径,而不是转储的数据。你可以做到这一点,绕过连接到数据库。 – 2012-10-22 17:59:55

+6

为了记录,'--drop'很重要:没有它,现有的'_id'不会被替换。这意味着您将要恢复的数据库中已经存在的对象的更改将不会被添加。 – drevicko 2013-07-28 11:48:16

+0

是实际被删除的'Gen'mongodb吗?在我的情况下,恢复时,我可以看到之前添加转储后添加的记录。你能解决我的问题在这里.. http://stackoverflow.com/questions/22424347/drop-whole-database-within-a-single-command-of-restoring-the-dump-of-mongodb – codeofnode 2014-03-15 14:13:42

5

我认为你的文件夹结构可能会在你尝试移动它时被搞乱。例如,这适用于我:

$ ./mongodump --db Gen 
$ ./mongorestore --db Gen --drop dump/Gen/ 

您可以尝试不移动转储目录,并从/ bin/dump/Gen恢复?

指定应该有它.bson文件的目录,例如,

$ ls /bin/dump/Gen 
foo.bson bar.bson baz.bson 
+0

嗨克里斯蒂娜,如果我在我的本地计算机上工作,它工作正常,数据库恢复,我没有得到任何错误。我移动的目录中有.bson文件。我无法恢复,因为我的dbs只能在本地显示,无法找到如何“打开”我的服务器(win2008),所以我可以从外部看到它,我想我会为此启动另一个问题一。 – VinnyG 2010-10-08 14:18:51

+0

好的。此错误之前的if语句实际上是“if(is_directory(p))”,其中p是dump/Gen中的文件/目录。你确定那里没有子目录吗? – kristina 2010-10-08 22:11:26

3

对谁不希望被错误惹恼

当指定--db“根目录指定与--db一个数据库名称时,必须是单个数据库的转储”附加的注释和没有--collection(恢复整个数据库): - 给定的路径必须是目录路径 - 目录不能包含除.bson或.json以外的任何其他文件。我花了一段时间才能认识到隐藏的.svn文件夹(如果你使用SVN)会搞乱脚本

+0

显式声明路径时,它不起作用。还有这个问题,但在我的情况下,Mongo在此文件夹中创建mongo.lock文件,已经删除了这个文件,所有的东西都像魅力一样。 – realnero 2013-03-29 10:43:47

-1

例子:

./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,但不是集合。

+1

这不能解决任何问题。错误是在谈论-d选项,而不是-c选项 – WattsInABox 2014-05-21 20:17:29

3

这是结束了,我的工作(mydb是我的数据库的名称):

mongorestore --drop -db mydb mydbbackup/mydb/ 

后我mongodump

mongodump -d mydb -o mydbbackup