如何将MongoDB数据库从cloud9导出到mlab?

时间:2017-04-13 03:18:01

标签: node.js mongodb heroku cloud9-ide mlab

所以我使用Node.js,mongoDB,express在cloud9上创建了一个Web应用程序。我按照说明在云端9中设置了MongoDB。

当我完成应用程序时,我将其部署到Heroku,并在mlab(mongolab)中创建了一个新的数据库。这很好。

但是,我将大量虚拟数据插入到cloud9上托管的数据库中。 我想将这个虚拟数据从cloud9中的db复制到mlab中的db。我该怎么做?

我做了一些研究。

根据mongodb文档,我应该使用db.copyDatabase():

db.copydatabase(fromdb,todb,fromhost,username,password,mechanism)

它说我应该在目标实例中运行此命令,即接收复制数据的实例。

我假设这意味着我应该通过以下方式连接到mlab上托管的数据库: mongo dsblahblah.mlab.com:59220/blahblah -u -p

然后运行db.copyDatabase命令,对吗?

但是我应该将什么用于fromdb参数?这是在cloud9中托管的数据库。但这个db的网址是什么?

帮助。和ELI5。

2 个答案:

答案 0 :(得分:3)

从Cloud9执行数据库转储。 https://docs.mongodb.com/manual/reference/program/mongoexport/

然后将文件导入MLab。这比尝试编写自动化方法要容易得多,除非你将来会反复进行这种转移。

答案 1 :(得分:2)

Nathan Loyer有正确的答案,虽然它当然比这更复杂。如果你像我一样并且真的不知道你在做什么,这里有一个对我有用的详细解释,以及我在底部得到这些信息的资源,以防万一更新并让你过时。

请注意,您需要为要迁移的每个集合执行此操作。你可能只有一个或几个收藏品,所以没那么麻烦。如果你想移动一个完整的数据库,可以调整这些指令,但这取决于你。

  1. 找出您要移动的集合。为此,在Cloud9中,在相应的目录中,在命令行中,运行以下命令,并记住或记下您标识的数据库和集合。 (如果您对集合不确定,可以使用db。(collection).find()输出它拥有的数据列表)
  2. mongo
    show dbs
    use (the name of the appropriate db, not in parentheses though)
    show collections
    
    1. 从数据库导出数据。这相对容易。只需使用ctrl + c退出mongo,并在命令行中使用以下代码,数据已填入且没有括号:
    2. mongoexport --db (your db name) --collection (your collection name) --outs (a filename: mongodb.org recommends "traffic.json", no quotes)
      
      1. 现在您需要将数据导入mLabs。转到mLabs,选择您的数据库,然后选择"工具"菜单。您应该在" JSON"下看到预制代码。进口。使用来自mLab的数据库用户凭据再次填写空白,但尚未运行。它应该看起来像:
      2. mongoimport -h ds12345.mlab.com:12121 -d databasename -c <collection> -u <user> -p <password> --file <input file, possibly traffic.json?>
        
        1. 为了成功通过导入,您应该检查您的Cloud9和mLabs实例是否在相同(或至少非常相似的版本)上运行。在cloud9中,只需键入&#34; mongo&#34;进入控制台,看看它说的是什么。你可能在2.6或3.2。在mLab上,它几乎在每一页上都有。只需查看&#34; mongod版本:xxxxx。&#34;你可能在3.4.7。我使用mLab 3.4将其作为Cloud9 3.2运行,并且运行正常。 (如果您的Cloud9不到版本3,请备份任何重要内容(使用git?)并根据https://community.c9.io/t/updating-mongodb/3914上的说明进行更新)
        2. 您需要做的另一件事是停止Cloud9中的所有进程,包括从根目录运行的Mongod。这是你需要运行mongoimport的地方(不是你工作区中某个目录中的命令行,这是我告诉你从中运行mongoexport的地方)。要明确:您的命令行应该显示&#34;用户名:〜$&#34;,不是&#34;用户名:〜/ workspace / filedirectories / maybeafewofthem(可能是主人)$&#34;。

          由于您从根运行,因此您还需要确保正确引用您传递的文件名。它不会像&#34; traffic.json那样简单。&#34;它应该看起来像&#34; workspace / directoryName / traffic.json。&#34; (如果导出成功,您应该看到traffic.json文件在某处浮动文件。)

          就是这样。运行步骤3中的代码,并检查mLabs它是否正确处理。很高兴。

          资源:

          http://docs.mlab.com/connecting/

          http://docs.mlab.com/migrating/

          https://docs.mongodb.com/manual/reference/program/mongoexport/

          https://docs.mongodb.com/manual/reference/program/mongoimport/