Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
删除MongoDB数据库和集合_Mongodb_Ubuntu 12.04 - Fatal编程技术网

删除MongoDB数据库和集合

删除MongoDB数据库和集合,mongodb,ubuntu-12.04,Mongodb,Ubuntu 12.04,我的mongoDB和我目前的ubuntu 12.04桌面电脑空间有问题。我总是使用默认设置,这意味着数据物理存储在/var/lib/mongodb下。当数据库规模大幅增长时,现在我想删除一些集合,以便在硬盘中留出一些空间。我已经检查了和其他方法,但每当我运行remove函数时,都会收到以下错误消息: Can't take a write lock while out of disk space 我想到的第一个解决方案是设置mongodb到外部硬盘或usb磁盘的路径,并使用rm-rf物理删除文件

我的mongoDB和我目前的ubuntu 12.04桌面电脑空间有问题。我总是使用默认设置,这意味着数据物理存储在/var/lib/mongodb下。当数据库规模大幅增长时,现在我想删除一些集合,以便在硬盘中留出一些空间。我已经检查了和其他方法,但每当我运行remove函数时,都会收到以下错误消息:

Can't take a write lock while out of disk space

我想到的第一个解决方案是设置mongodb到外部硬盘或usb磁盘的路径,并使用
rm-rf
物理删除文件夹。这是一个安全的解决方案吗?这个问题还有其他解决方案吗?

Mongodb非常适合复制数据库,因为您所要做的就是将完整的数据目录复制到其他地方,然后您只需将一个新的mongod进程指向它,它就会工作

因此,你的步骤是:

  • 查找当前数据目录
  • 将此复制到其他位置
  • 删除目录中具有.lock的任何文件(这将停止Mongo (从再次加载开始)
  • 现在使用以下命令启动另一个mongo:

    mongod --dbpath <path to new directory on new disk> --port 27020
    

    一旦您满意,您就可以安全地删除旧的mongodb数据目录,然后在其上复制新的数据目录。

    您应该首先将数据文件复制到外部磁盘,否则将删除所有数据:),但原则上可以解决问题。有了更多可用磁盘,您可以有选择地删除数据并使用压缩。或者,您可以尝试对外部磁盘执行mongodump,删除不需要的收集文件,删除数据文件,然后重新导入数据。不用说,始终要有备份。此外,您可以尝试删除硬盘上的其他一些文件,以便mongo可以获得更多空间并能够进行删除。
     db.repairDatabase()