到目前为止,我还没有指定MongoDB数据目录,并且只有一个30gb的主分区。

我刚把空间用完了,又加了一个新硬盘。我如何传输我的数据(显然是在/var/lib/mongodb/中)并配置MongoDB,以便所有内容都在新磁盘上运行而不影响我现有的安装?


当前回答

简单地说,MongoDB中的——dbpath参数将允许您控制MongoDB从哪个目录读取和写入数据。

Mongod—dbpath /usr/local/mongodb-data

启动mongodb并将文件放在/usr/local/mongodb-data中。

根据你的发行版和MongoDB安装,你也可以配置mongo .conf文件来自动执行:

# Store data in /usr/local/var/mongodb instead of the default /data/db
dbpath = /usr/local/var/mongodb

官方的10gen Linux包(Ubuntu/Debian或CentOS/Fedora)带有一个基本配置文件,放在/etc/ MongoDB .conf中,MongoDB服务在启动时读取这个配置文件。您可以在这里找零。

其他回答

我发现了一个导致符号链接出现故障的特殊情况:

我做了一个标准的mongodb企业安装,但是将/var/lib/mongodb更改为符号链接,因为我想使用XFS文件系统作为我的数据库文件夹,第三个文件系统用于日志文件夹。

$sudo systemctl start mongod(失败,提示没有权限写入mongodb.log)..但是如果我用相同的配置文件启动,它就成功了:

. .作为外部驱动器(ziggy)的所有者,我能够启动 $mongod——config /etc/mongodb.conf——fork

我最终发现…符号链接指向不同的文件系统,mongodb(用户)没有权限浏览符号链接引用的文件夹。符号链接和符号链接所引用的文件夹都对mongod用户具有扩展权限,所以这没有意义吗?

/var/log/mongodb(从std安装)被更改为符号链接,我之前检查过:

$ ll /var/log/mongodb lrwxrwxrwx 1 mongodb mongodb 38 Oct 28 21:58 /var/log/mongodb -> /media/ziggy/XFS_DB/mongodb/log/

$ ll -d /media/ziggy/Ext4DataBase/mongodb/log drwxrwxrwx 2 mongodb mongodb 4096 11月1日12:05 /media/ashley/XFS_DB/mongodb/log/

. .但这似乎没有任何意义。当然,用户mongodb有RWX访问链接,文件夹和文件mongodb.log…但是它无法通过符号链接找到它,因为媒体的BASE文件夹无法被mongodb搜索到。

所以. .最后我是这样做的: $ ll /media/ziggy/ . . drwx------ 5 ziggy ziggy 4096 10月28日21:49 XFS_DB/

并发现违规缺失x权限..

$chmod a+x /media/ziggy/XFS_DB解决了这个问题

事后看来似乎很愚蠢,但没有任何有用的搜索结果。

如果您想更改默认路径,下面的命令将为您工作。 只需在mongodb的bin目录中输入这个。

mongod --dbpath=yourdirectory\data\db

如果您也想移动现有数据,那么只需在执行命令之前将所有文件夹从现有data\db目录复制到新目录。

同时停止正在运行的mongodb服务。

拷贝“/var/lib/mongodb”目录下的内容到“/data/db”目录下。您应该查找的文件应该具有your_db_name这样的名称。Ns和your_dbname。N, N是以0开头的数字。如果您在/var/lib/mongodb下没有看到这样的文件,请在您的文件系统中搜索它们。

复制完成后,在通过mongod命令启动MongoDB时使用——dbpath=/data/db。

简单地说,MongoDB中的——dbpath参数将允许您控制MongoDB从哪个目录读取和写入数据。

Mongod—dbpath /usr/local/mongodb-data

启动mongodb并将文件放在/usr/local/mongodb-data中。

根据你的发行版和MongoDB安装,你也可以配置mongo .conf文件来自动执行:

# Store data in /usr/local/var/mongodb instead of the default /data/db
dbpath = /usr/local/var/mongodb

官方的10gen Linux包(Ubuntu/Debian或CentOS/Fedora)带有一个基本配置文件,放在/etc/ MongoDB .conf中,MongoDB服务在启动时读取这个配置文件。您可以在这里找零。

在debian/ubuntu中,你需要编辑/etc/init.d / mongodb脚本。 实际上,这个文件应该从/etc/mongodb.conf中提取设置 但它似乎没有拉出默认目录(可能是一个错误)

这是一个有点hack,但添加这些到脚本使它正确启动:

add:

DBDIR=/database/mongodb

变化:

DAEMON_OPTS=${DAEMON_OPTS:-"--unixSocketPrefix=$RUNDIR --config $CONF run"}

to:

DAEMON_OPTS=${DAEMON_OPTS:-"--unixSocketPrefix=$RUNDIR --dbpath $DBDIR --config $CONF run"}