我在数字海洋上有一个Ubuntu 16.04.3 x64液滴。如何从我本地计算机上的文件系统导入数据库?
我的应用程序是使用Meteor构建的。从我的应用程序的文件夹本地运行时,以下操作:
mongorestore --port=3001 ../dump
我尝试过SSH到服务器
ssh root@<my servers IP>
然后运行相同的命令:
mongorestore --port=3001 /Users/<my username>/Projects/<project name>/dump
但是我收到了一个错误:
The program 'mongorestore' is currently not installed. You can install it by typing:
apt install mongodb-clients
所以我尝试进入mongod:
docker exec -it mongodb mongo nomad
我收到了一条消息:
MongoDB shell version v3.4.1
connecting to: mongodb://127.0.0.1:27017/nomad
MongoDB server version: 3.4.1
我尝试相同的命令:
mongorestore --port=3001 /Users/<my username>/Projects/<project name>/dump
我收到了这个错误:
2018-01-13T12:30:25.134+0000 E QUERY [main] SyntaxError: missing ; before statement @(shell):1:15
答案 0 :(得分:1)
mongorestore
是一个shell命令,你从bash运行它。你运行的mongoshell语法有限,所以它不会像那样工作。
您可以尝试这样的事情:
docker exec -it mongodb mongorestore /Users/<my username>/Projects/<project name>/dump
问题是您尝试加载的项目转储对Docker实例不可用,因为它的文件系统与主机服务器隔离。您可以使用docker cp
将文件复制到docker实例中,然后加载它们,但它开始变得混乱,并且docker容器实际上并不是设计为以这种方式使用。 docker容器通常只有最少的工具可用,并且您最终需要安装其他软件才能执行这些操作。然后它变成非标准容器,不能被替换。
您可能需要时间转移到单独的数据库服务器,这可以通过使用mlab等服务来完成,或者您可以创建自己的Droplet来托管mongodb服务器。使用服务为您提供的工具可以轻松获取备份副本,将一个数据库复制到另一个数据库,使用Web控制面板还原备份等。更容易做到。