当前位置:  开发笔记 > 编程语言 > 正文

更改MongoDB数据存储目录

如何解决《更改MongoDB数据存储目录》经验,为你挑选了7个好方法。

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

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



1> Brendan W. M..:

简短的回答是--dbpathMongoDB 中的参数将允许您控制MongoDB读取的目录并从中写入数据.

mongod --dbpath/usr/local/mongodb-data

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

根据您的分发和MongoDB安装,您还可以配置mongod.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.confMongoDB服务在启动时会读取它.你可以在这里做出改变.


我根据这个解决方案更新了`/ etc/mongodb.conf`.然后,在启动`mongod`之后,我看到使用了`/ data/db`.为什么更新mongodb.conf不会影响mongod存储db的位置?(注意使用`--dbpath`参数有效.
在我的debian框中,它是mongodb.conf,而不是mongod.conf
需要为mongod用户"chown"新的数据目录以获取服务启动脚本.

2> DmitrySandal..:

在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  mongodb


我认为这应该是答案.我总是发现符号链接是一个非常好的解决方案,我推广任何使用它们而不是改变配置等的解决方案.

3> Yogesh Sanch..:

如果要更改默认路径,以下命令将适用于您.只需在mongodb的bin目录中输入.

mongod --dbpath=yourdirectory\data\db

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

并且还停止正在运行的现有mongodb服务.



4> 小智..:

如果你没有它,在MongoDB文件夹中创建一个名为mongod.cfg的文件.就我而言:C:\ Users\ivanbtrujillo\MongoDB

然后,使用记事本编辑mongod.cfg并添加一行包含以下内容(我们的自定义dbpath):

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

在此文件中,您还应该指定日志路径.我的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它的配置文件及其logpath.

然后,当你启动mongodb服务时,它的工作原理.

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

希望能帮助到你,



5> lobster1234..:

复制的内容/var/lib/mongodb/data/db.您应该查找的文件应该具有类似的名称 your_db_name.ns,your_dbname.n其中n是从0开始的数字.如果您没有看到此类文件/var/lib/mongodb,请在您的文件系统上搜索它们.

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



6> drinchev..:

这是我做的,希望它对其他人有帮助:

脚步:

    停止使用mongodb的服务

    停止mongod - 我的方式是使用我的rc文件/etc/rc.d/rc.mongod stop,如果你使用其他东西,比如systemd你应该检查你的文档如何做到这一点

    在新硬盘上创建一个新目录 -mkdir /mnt/database

    确保mongodb具有从该目录读取/写入的权限(通常chown mongodb:mongodb -R /mnt/database/mongodb) - 感谢@DanailGabenski.

    将mongodb的数据文件夹复制到新位置 -cp -R /var/lib/mongodb/ /mnt/database/

    删除旧的数据库文件夹 -rm -rf /var/lib/mongodb/

    创建指向新数据库文件夹的符号链接 -ln -s /mnt/database/mongodb /var/lib/mongodb

    启动mongod -/etc/rc.d/rc.mongod start

    检查你的mongod 的日志并做一些健全性检查(尝试mongo连接到你的数据库,看看一切是否正常)

    启动您在第1点停止的服务

当你这样做时,没有必要告诉你应该小心,特别是rm -rf我认为这是最好的方法.

在mongod运行时,您永远不应该尝试复制数据库目录,因为可能存在从其写入/读取的服务,这将改变数据库的内容.


在第5点,make命令看起来像cp -rp/var/lib/mongodb// mnt/database /这将保持文件夹的所有权和权限不变.

7> Roberto..:

如果通过apt-getUbuntu 12.04 安装,请不要忘记chown -R mongodb:nogroup /path/to/new/directory.另外,更改配置/etc/mongodb.conf.

提醒一下,该mongodb-10gen软件包现在通过upstart启动,因此配置脚本就在/etc/init/mongodb.conf

我刚刚经历过这个,希望googlers发现它很有用:)

推荐阅读
mylvfamily
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有