移动MongoDB的数据文件夹?

时间:2012-10-06 10:09:22

标签: mongodb

我在不同的地方有2台电脑(因此无法使用相同的wifi网络)。 一个包含大约50GB的数据(MongoDB文件),我想移动到第二个,它具有更多的计算能力用于分析。但是如何让第二台机器上的MongoDB识别该文件夹呢?

4 个答案:

答案 0 :(得分:21)

当你启动mongod进程时,你为它提供了一个参数--dbpath /directory,它就知道数据文件夹的位置。

您需要做的就是:

  1. 停止旧计算机上的mongod进程。等到它退出。
  2. 将整个/ data / db目录复制到新计算机
  3. 在新计算机上启动mongod进程,为其提供--dbpath /newdirectory参数。
  4. 新计算机上的mongod将使用您指定的文件夹--dbpath。没有必要“识别”,因为该文件夹中没有特定的机器,它只是数据。

答案 1 :(得分:1)

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

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

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

研究并利用 mongodumpmongorestore。这可能更安全,而且这是迁移数据库的官方方式。

如果你从来没有转储过并且不能再转储

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

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

  • 编辑 /etc/mongod.conf 并将 dbPath 字段更改为所需位置。
  • 使用以下脚本作为参考,或定制它并在您的系统上运行它,风险自负。
    • 我不保证这适用于每个系统 --> 请手动验证。
    • 我也不能保证它在所有情况下都能完美运行。
    • 警告:将删除您指定的目标数据目录中的所有内容。
    • 不过,我可以说它在我的系统上运行,并且通过了 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

答案 2 :(得分:0)

对于Windows非常简单,只需将数据文件夹移动到目标位置 运行cmd “ C:\ your \ mongodb \ bin-path \ mongod.exe” --dbpath =“ c:\ what \ ever \ path \ data \ db”

答案 3 :(得分:-1)

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

Here is another question where the answer is further explained