Answers:
简短的答案是,--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服务在启动时会读取此文件。您可以在这里进行更改。
/etc/mongodb.conf
根据此解决方案进行了更新。然后,启动后mongod
,我看到它/data/db
已被使用。为什么更新mongodb.conf不会影响mongod将数据库存储在何处?(请注意,使用--dbpath
论证工作。
/etc/mongodb.conf
,更新对我来说很好。
chown
服务启动脚本需要将新的数据目录传递给mongod用户。
在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
chmod -R o+x /<home>
。参见: stackoverflow.com/a/38193187/205049
Permission denied: "/var/lib/mongodb"
这是/home/../mongodb/mongodb/的样子: drwxrwxr-x 3 mongodb mongodb 4096 oct 13 09:32 ../ drwxr-xr-x 2 mongodb nogroup 4096 oct 13 09:29 journal/ -rw------x 1 mongodb nogroup 67108864 sep 23 14:44 local.0* -rw------x 1 mongodb nogroup 16777216 sep 23 14:44 local.ns* -rwxr-xr-x 1 mongodb mongodb 0 oct 13 09:29 mongod.lock*
mv
命令时您在哪个文件夹中,如果您从lib内部运行mv命令,则不再需要mongodb ln
到
如果您想更改默认路径,以下命令将为您工作。只需在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它的配置文件及其日志路径。
然后,当您启动mongodb服务时,它将起作用。
这是在Windows中安装mongoDB的完整教程: http
希望能帮助到你,
将的内容复制/var/lib/mongodb
到/data/db
。您要查找的文件应具有类似的名称 your_db_name.ns
,your_dbname.n
其中n
一个以0开头的数字。如果在下看不到此类文件/var/lib/mongodb
,请在文件系统上搜索它们。
复制完成后,--dbpath=/data/db
在通过mongod
命令启动MongoDB时使用。
这是我所做的,希望对其他人有所帮助:
脚步:
/etc/rc.d/rc.mongod stop
,如果您使用其他内容(例如systemd),则应检查文档以了解如何执行此操作mkdir /mnt/database
chown mongodb:mongodb -R /mnt/database/mongodb
)-感谢@DanailGabenski。cp -R /var/lib/mongodb/ /mnt/database/
rm -rf /var/lib/mongodb/
ln -s /mnt/database/mongodb /var/lib/mongodb
/etc/rc.d/rc.mongod start
mongo
连接到数据库以查看一切是否正常)无需告诉您在执行此操作时应特别小心,尤其rm -rf
是在这样做时,但我认为这是最好的方法。
在mongod运行时,您永远不要尝试复制数据库dir,因为可能会有一些服务会对其进行读写操作,这会改变数据库的内容。
chown mongodb:mongodb -R /mnt/database/mongodb
在debian / ubuntu中,您需要编辑/etc/init.d/mongodb脚本。确实,此文件应该从/etc/mongodb.conf中拉取设置,但似乎没有拉取默认目录(可能是一个错误)
这有点hack,但是将它们添加到脚本中可以使其正确启动:
加:
DBDIR=/database/mongodb
更改:
DAEMON_OPTS=${DAEMON_OPTS:-"--unixSocketPrefix=$RUNDIR --config $CONF run"}
至:
DAEMON_OPTS=${DAEMON_OPTS:-"--unixSocketPrefix=$RUNDIR --dbpath $DBDIR --config $CONF run"}
sudo chmod o+rx /media
例如,如果您的挂载点为media
。从第一个安装点开始,r + x必须对“其他”组和用户可用。