到目前为止,我还没有指定MongoDB数据目录,并且只有一个30gb的主分区。
我刚把空间用完了,又加了一个新硬盘。我如何传输我的数据(显然是在/var/lib/mongodb/中)并配置MongoDB,以便所有内容都在新磁盘上运行而不影响我现有的安装?
到目前为止,我还没有指定MongoDB数据目录,并且只有一个30gb的主分区。
我刚把空间用完了,又加了一个新硬盘。我如何传输我的数据(显然是在/var/lib/mongodb/中)并配置MongoDB,以便所有内容都在新磁盘上运行而不影响我现有的安装?
当前回答
如果您想更改默认路径,下面的命令将为您工作。 只需在mongodb的bin目录中输入这个。
mongod --dbpath=yourdirectory\data\db
如果您也想移动现有数据,那么只需在执行命令之前将所有文件夹从现有data\db目录复制到新目录。
同时停止正在运行的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
简单地说,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服务在启动时读取这个配置文件。您可以在这里找零。
拷贝“/var/lib/mongodb”目录下的内容到“/data/db”目录下。您应该查找的文件应该具有your_db_name这样的名称。Ns和your_dbname。N, N是以0开头的数字。如果您在/var/lib/mongodb下没有看到这样的文件,请在您的文件系统中搜索它们。
复制完成后,在通过mongod命令启动MongoDB时使用——dbpath=/data/db。
以下是我所做的,希望对其他人有所帮助:
步骤:
Stop your services that are using mongodb Stop mongod - my way of doing this was with my rc file /etc/rc.d/rc.mongod stop, if you use something else, like systemd you should check your documentation how to do that Create a new directory on the fresh harddisk - mkdir /mnt/database Make sure that mongodb has privileges to read / write from that directory ( usually chown mongodb:mongodb -R /mnt/database/mongodb ) - thanks @DanailGabenski. Copy the data folder of your mongodb to the new location - cp -R /var/lib/mongodb/ /mnt/database/ Remove the old database folder - rm -rf /var/lib/mongodb/ Create symbolic link to the new database folder - ln -s /mnt/database/mongodb /var/lib/mongodb Start mongod - /etc/rc.d/rc.mongod start Check the log of your mongod and do some sanity checking ( try mongo to connect to your database to see if everything is all right ) Start your services that you stopped in point 1
没有必要告诉你,当你这样做的时候应该小心,特别是使用rm -rf,但我认为这是最好的方法。
当mongod运行时,永远不要尝试复制数据库目录,因为可能会有服务从它写/读,这将改变数据库的内容。
如果您想更改默认路径,下面的命令将为您工作。 只需在mongodb的bin目录中输入这个。
mongod --dbpath=yourdirectory\data\db
如果您也想移动现有数据,那么只需在执行命令之前将所有文件夹从现有data\db目录复制到新目录。
同时停止正在运行的mongodb服务。