更改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.ns
和your_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/
希望它有帮助,
以下是我所做的,希望对其他人有所帮助:
脚步:
- 停止正在使用mongodb的服务
- 停止mongod – 我这样做的方式是用我的rc文件
/etc/rc.d/rc.mongod stop
,如果你使用别的东西,像systemd你应该检查你的文档如何做到这一点 - 在新硬盘上创build一个新目录 –
mkdir /mnt/database
- 将mongodb的数据文件夹复制到新位置 –
cp -R /var/lib/mongodb/ /mnt/database/
- 删除旧的数据库文件夹 –
rm -rf /var/lib/mongodb/
- 创build符号链接到新的数据库文件夹 –
ln -s /mnt/database/mongodb /var/lib/mongodb
- 启动mongod –
/etc/rc.d/rc.mongod start
- 检查您的mongod 的日志 ,并做一些理智的检查(尝试
mongo
连接到您的数据库,看看是否一切正常) - 开始你在第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"}