将 mongo 数据库从本地导入到 Digital Ocean 上的 Ubuntu droplet?

Import a mongo database form local to Ubuntu droplet on Digital Ocean?

我在数字海洋上有一个 Ubuntu 16.04.3 x64 droplet。如何从本地计算机上的文件系统导入数据库?

我的应用程序是用 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

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 控制面板轻松制作备份副本、将一个数据库复制到另一个数据库、恢复备份等。更容易做到。