20

我在不同的地方有两台电脑(所以不可能使用同一个 wifi 网络)。一个包含大约 50GB 的数据(MongoDB 文件),我想将其移动到第二个具有更多计算能力的分析。但是我怎样才能让第二台机器上的 MongoDB 识别那个文件夹呢?

4

4 回答 4

24

当你开始mongod进程时,你向它提供一个参数,它--dbpath /directory是如何知道数据文件夹在哪里的。

您需要做的就是:

  1. 停止mongod旧计算机上的进程。等到它退出。
  2. 将整个 /data/db 目录复制到新计算机
  3. mongod在新计算机上启动进程并为其提供--dbpath /newdirectory参数。

mongod机器上的 将使用您用 --dbpath 指定的文件夹。无需“识别”,因为该文件夹中没有特定的机器,它只是数据。

于 2012-10-06T13:01:19.670 回答
2

我最近自己做了这个,我想提供一些额外的注意事项,以防读者(像我一样)遇到问题。

以下信息特定于 *nix 系统,但它可能适用于对 Windows 进行大量修改的情况。

如果源数据位于您仍然可以运行的 mongo 服务器中(首选)

查看并使用mongodumpand mongorestore。这可能更安全,并且是迁移数据库的官方方式。

如果你从来没有转储过,也不能再转储了

可以,可以直接复制数据目录;但是,您还需要确保mongodb用户在复制目录后具有对目录的完全访问权限。

我的步骤如下。在您要将旧数据库传输到的机器上:

  • 编辑/etc/mongod.confdbPath 字段并将其更改为所需位置。
  • 使用以下脚本作为参考,或对其进行定制并在您的系统上运行,风险自负。
    • 我不保证这适用于每个系统 --> 请手动验证。
    • 我也不能保证它在每种情况下都能完美运行。
    • 警告:将删除您指定的目标数据目录中的所有内容。
    • 但是,我可以说它在我的系统上运行,并且通过了shellcheck.
    • 重要的部分是简单地复制旧的数据库目录,并mongodb通过chown.
#!/bin/bash

TARGET_DATA_DIRECTORY=/path/to/target/data/directory  # modify this
SOURCE_DATA_DIRECTORY=/path/to/old/data/directory  # modify this too

echo shutting down mongod...
sudo systemctl stop mongod

if test "$TARGET_DATA_DIRECTORY"; then
  echo removing existing data directory...
  sudo rm -rf "$TARGET_DATA_DIRECTORY"
fi

echo copying backed up data directory...
sudo cp -r "$SOURCE_DATA_DIRECTORY" "$TARGET_DATA_DIRECTORY"
sudo chown -R mongodb "$TARGET_DATA_DIRECTORY"

echo starting mongod back up...
sudo systemctl start mongod
sudo systemctl status mongod  # for verification
于 2021-01-25T23:17:33.773 回答
1

对于 Windows 来说很容易,只需将数据文件夹移动到目标位置运行 cmd "C:\your\mongodb\bin-path\mongod.exe" --dbpath="c:\what\ever\path\data\db"

于 2018-08-03T22:16:45.607 回答
-1

也许您没有做的是导出或转储数据库。数据库不可移植,因此必须导出或创建为转储文件。

这是另一个问题,其中进一步解释了答案

于 2017-08-20T20:54:44.510 回答