更改MongoDB数据存储目录

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

我刚刚空间不足,并添加了一个新的硬盘。 我怎样才能传输我的数据(这显然是在/var/lib/mongodb/ ),并configurationMongoDB,使一切运行的新磁盘,而不会影响我现有的安装?

简单的答案是,MongoDB中的--dbpath参数将允许您控制MongoDB读取和写入数据的目录。

mongod –dbpath / usr / local / mongodb-data

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

根据您的发行版和MongoDB安装,您也可以configurationmongod.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的基本configuration文件,MongoDB服务在启动时会读取它。 你可以在这里做你的改变。

解决它在2分钟宕机:)
只需移动文件夹,添加符号链接,然后调整权限。

 sudo service mongod stop sudo mv mongodb /new/disk/mongodb/ sudo ln -s /new/disk/mongodb/ /var/lib/mongodb sudo chown mongodb:mongodb /new/disk/mongodb/ sudo service mongod start # test if mongodb user can access new location: sudo -u mongodb -s cd /new/disk/mongodb/ # resolve other permissions issues if necessary sudo usermod -a -G <newdisk_grp> mongodb 

/var/lib/mongodb的内容复制到/data/db 。 您应该查找的文件应该有像your_db_name.nsyour_dbname.n这样的名称,其中n是一个以0开头的数字。如果在/var/lib/mongodb下没有看到这样的文件,请在文件系统上search它们。

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

如果你没有,在MongoDB文件夹中创build一个名为mongod.cfg的文件。 在我的情况下:C:\ Users \ ivanbtrujillo \ MongoDB

然后,用记事本编辑mongod.cfg,并添加一行(我们的自定义dbpath):

 dbpath=C:\Users\ivanbtrujillo\MongoDB\data\db 

在这个文件中,你也应该指定logpath。 我的mongod.cfg文件是:

 logpath=C:\Users\ivanbtrujillo\MongoDB\log\mongo.log dbpath=C:\Users\ivanbtrujillo\MongoDB\data\db 

如果您使用mongoDB作为Windows服务,则必须更改此密钥并指定mongod.cfg文件。

要将mongodb安装为Windows服务,请运行以下命令:

 **"C:\Users\ivanbtrujillo\MongoDB\bin\mongod.exe" --config "C:\Users\ivanbtrujillo\MongoDB\mongod.cfg" –install** 

打开regedit.exe并转到以下路由:

 HKEYLOCALMACHINE\SYSTEM\CurrentControlSet\services\MongoDB 

MongoDB服务不起作用,我们必须编辑ImagePath键,删除它的内容,并把下面的内容:

 **"C:\Users\ivanbtrujillo\MongoDB\bin\mongod.exe" --config "C:\Users\ivanbtrujillo\MongoDB\mongod.cfg" --logpath="C:\Users\ivanbtrujillo\MongoDB\log\mongo.log" –service** 

我们表示要mongo它的configuration文件和它的日志path。

那么当你初始化mongodb服务时,它就可以工作。

以下是在Windows中安装mongoDB的完整教程: http ://ivanbtrujillo.herokuapp.com/2014/07/24/installing-mongodb-as-a-service-windows/

希望它有帮助,

以下是我所做的,希望对其他人有所帮助:

脚步:

  1. 停止正在使用mongodb的服务
  2. 停止mongod – 我这样做的方式是用我的rc文件/etc/rc.d/rc.mongod stop ,如果你使用别的东西,像systemd你应该检查你的文档如何做到这一点
  3. 在新硬盘上创build一个新目录mkdir /mnt/database
  4. 将mongodb的数据文件夹复制到新位置cp -R /var/lib/mongodb/ /mnt/database/
  5. 删除旧的数据库文件夹rm -rf /var/lib/mongodb/
  6. 创build符号链接到新的数据库文件夹ln -s /mnt/database/mongodb /var/lib/mongodb
  7. 启动mongod/etc/rc.d/rc.mongod start
  8. 检查您的mongod 的日志 ,并做一些理智的检查(尝试mongo连接到您的数据库,看看是否一切正常)
  9. 开始你在第1点停止的服务

没有必要告诉你这样做的时候应该小心,尤其是用rm -rf但是我认为这是最好的办法。

在mongod运行的时候,你不应该试图拷贝数据库目录,因为可能有写入/读取的服务会改变数据库的内容。

如果在Ubuntu 12.04中通过apt-get安装,请不要忘记将chown -R mongodb:nogroup /path/to/new/directory 。 另外,更改/etc/mongodb.conf的configuration。

提醒一下, mongodb-10gen软件包现在是通过新贵启动的,所以configuration脚本位于/etc/init/mongodb.conf

我刚刚经历了这个,希望谷歌search它有用:)

对于Windows 10,下面的命令将为你工作,如果你想改变默认path到下面的path—只需在mongodb-

mongod –dbpath = yourdirectory \ data \ db

如果您想要移动现有数据,则只需将所有文件夹从现有data \ db目录复制到新目录即可。 也停止正在运行的现有mongodb服务。 希望它有帮助。

用户是mongod而不是mongodb

sudo chown mongod:mongod / newlocation

如果服务失败,您可以查看错误日志: –

/var/log/mongodb/mongod.log

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

这是一个黑客,但将这些添加到脚本,使其正确启动:

加:

 DBDIR=/database/mongodb 

更改:

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

至:

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