在Dokku安装上导入并添加索引到mongodb

时间:2016-03-04 23:20:32

标签: node.js mongodb dokku

我最近在使用Dokku的Ubuntu服务器上部署了应用程序。这是一个带有Mongodb数据库的Node.js应用程序。

为了使网站正常工作,我需要在数据库中加载geojson文件。在我的开发机器上,这是使用mongoimport命令从ubuntu命令行完成的。我无法弄清楚如何在Dokku中做到这一点。

我还需要添加地理空间索引。这是从我的开发机器上的mongo控制台完成的。我也无法弄清楚如何在Dokku安装上做到这一点。

4 个答案:

答案 0 :(得分:4)

非常感谢@Jonathan。你帮我解决了这个问题。这就是我所做的。

我在本地计算机上使用mongodump来创建数据库的备份文件。它默认为.bson文件。

我将该文件上传到我的远程服务器。在远程服务器上,我将bson文件放在名为“dump”的文件夹中。然后涂焦那个文件夹。我最初习惯使用-z标志,但mongo / dokku不喜欢gzip。所以我使用没有压缩的tar就像这样:

tar -cvf dump.tar dump

接下来我运行了dokku mongo import命令:

$dokku mongo:import mongo_claims < dump.tar
2016-03-05T18:04:17.255+0000    building a list of collections to restore from /tmp/tmp.6S378QKhJR/dump dir
2016-03-05T18:04:17.270+0000    restoring mongo_claims.docs4 from /tmp/tmp.6S378QKhJR/dump/docs4.bson
2016-03-05T18:04:20.729+0000    [############............]  mongo_claims.docs4  22.3 MB/44.2 MB  (50.3%)
2016-03-05T18:04:22.821+0000    [########################]  mongo_claims.docs4  44.2 MB/44.2 MB  (100.0%)
2016-03-05T18:04:22.822+0000    no indexes to restore
2016-03-05T18:04:22.897+0000    finished restoring mongo_claims.docs4 (41512 documents)
2016-03-05T18:04:22.897+0000    done

这就是诀窍。我的网站立即获得了所有数据。

答案 1 :(得分:3)

mongodump将从现有数据库中导出所有数据+索引。 https://docs.mongodb.org/manual/reference/program/mongodump/

然后mongorestore将带有索引的mongodump恢复到现有数据库。 https://docs.mongodb.org/manual/reference/program/mongorestore/

  

mongorestore重新创建由mongodump记录的索引。

您可以从dev机器到Dokku数据库执行这两个命令。

答案 2 :(得分:0)

导入效果很好,但是既然你提到了mongo控制台,很高兴知道如果你使用https://github.com/dokku/dokku-mongo mongo:list并且你可以连接到你的Mongo实例。 mongo:connect ...

E.g:

root@somewhere:~# dokku mongo:list
NAME      VERSION      STATUS   EXPOSED PORTS   LINKS
mydb      mongo:3.2.1  running  1->2->3->4->5   mydb

root@somewhere:~# dokku mongo:connect mydb
MongoDB shell version: 3.2.1
connecting to: mydb
> db
mydb

  Mongo shell!

> exit
bye

答案 3 :(得分:0)

对于dokku v0.5.0 +和dokku-mongo v1.7.0 +

使用mongodump将数据导出到档案​​中:

mongodump --db mydb --gzip --archive=mydb.archive

使用dokku:import从存档导入数据

dokku mongo:import mydb < mydb.archive