我一直在试图找到一种方法来做到这一点,但不能,我有一种感觉,有没有一种简单的方法来做我想做的事。Mongorestore通过标准输入不同名称的数据库
我一直在使用mongodump | mongorestore作为一种避免创建实际存储的文件集的方式进行测试,这对于基于云的服务非常有用。到目前为止,我已经被指定相同的分贝测试这一点,尽管它在技术上是没有必要的,是这样的...
mongodump -h hostname -d dumpdb --excludeCollection bigcollection --archive | mongorestore --archive -d dumpdb --drop
mongodump -h hostname -d dumpdb -c bigcollection --archive --queryFile onlythese.json | mongorestore --archive -d dumpdb -c bigcollection --drop
我发现,这些选项的工作最适合我。当我试图指定-o -
选项与单个数据库,--archive
删除,我有一些问题,但因为这工作,我没有搞砸了。 因为我恢复到相同的分贝,并且因为只有那时在那里的集合被恢复,我意识到我可以在两个mongorestore命令中敲掉-d
和-c
。但是,这很容易做到,并且是为下一步设置的...... 我所要做的只是将指定的分两步恢复到不同名称的数据库,像这样...
mongodump -h hostname -d dumpdb --excludeCollection bigcollection --archive | mongorestore --archive -d restoredb --drop
mongodump -h hostname -d dumpdb -c bigcollection --archive --queryFile onlythese.json | mongorestore --archive -d restoredb -c bigcollection --drop
转储工作正常,但恢复不。基于有限的文档,我的假设是dump db和restore db需要相同才能工作;如果mongorestore
中指定的数据库不在转储中,则它将不会恢复。 我觉得这很烦人;我的另一个想法是恢复数据库,并将其复制到其他数据库。 我曾考虑过使用其他工具,如mongo-dump-stream,但考虑到目前为止所有工作都在顺利进行,我希望能够使用默认工具。 另一方面,我确实将存档转储到一个文件(如:> dumpdb.tar
),并尝试从那里恢复(如--archive=dumpdb.tar
),这是我确认数据库需要在转储中的方式。
任何建议/意见/黑客将受到欢迎。
你是在错误的站点。 [dba.stackexchange.com](http://dba.stackechange.com)是关于数据库管理和备份的问题。 StackOverflow适用于“编程”问题,但事实并非如此。 –