我最近在使用Dokku的Ubuntu服务器上部署了应用程序。这是一个带有Mongodb数据库的Node.js应用程序。
为了使网站正常工作,我需要在数据库中加载geojson文件。在我的开发机器上,这是使用mongoimport命令从ubuntu命令行完成的。我无法弄清楚如何在Dokku中做到这一点。
我还需要添加地理空间索引。这是从我的开发机器上的mongo控制台完成的。我也无法弄清楚如何在Dokku安装上做到这一点。
答案 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