到目前为止,我还没有指定MongoDB数据目录,只有一个30 GB的主分区.
我刚用完了空间并添加了一个新的硬盘.如何传输我的数据(显然是在/var/lib/mongodb/
)并配置MongoDB以便所有内容都在新磁盘上运行而不会影响我现有的安装?
简短的回答是--dbpath
MongoDB 中的参数将允许您控制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.conf
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 -Gmongodb
如果要更改默认路径,以下命令将适用于您.只需在mongodb的bin目录中输入.
mongod --dbpath=yourdirectory\data\db
如果您还想移动现有数据,则只需在执行命令之前将所有文件夹从现有data\db目录复制到新目录.
并且还停止正在运行的现有mongodb服务.
如果你没有它,在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/
希望能帮助到你,
复制的内容/var/lib/mongodb
来/data/db
.您应该查找的文件应该具有类似的名称 your_db_name.ns
,your_dbname.n
其中n
是从0开始的数字.如果您没有看到此类文件/var/lib/mongodb
,请在您的文件系统上搜索它们.
复制--dbpath=/data/db
完毕后,通过mongod
命令启动MongoDB时使用.
这是我做的,希望它对其他人有帮助:
脚步:
停止使用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运行时,您永远不应该尝试复制数据库目录,因为可能存在从其写入/读取的服务,这将改变数据库的内容.
如果通过apt-get
Ubuntu 12.04 安装,请不要忘记chown -R mongodb:nogroup /path/to/new/directory
.另外,更改配置/etc/mongodb.conf
.
提醒一下,该mongodb-10gen
软件包现在通过upstart启动,因此配置脚本就在/etc/init/mongodb.conf
我刚刚经历过这个,希望googlers发现它很有用:)