我正在使用mongodb和我当前的Ubuntu 12.04台式电脑有一个空间问题。我始终使用默认设置,这意味着数据物理存储在/ var / lib / mongodb下。当数据库大小大大增加时,现在我想删除一些集合来在我的硬盘中有一些空的空间。我已经检查了这个和其他方法,但每当我运行删除功能时,我会保留获取以下错误消息:

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
    

现在将打开一个新的Mongo数据库(但在不同的端口上,以避免可能已经运行的mongod的任何问题)。 现在,您将拥有新的Mongod对阵新磁盘而无需删除集合\ DBS。请记住,MongoDB正在贪婪,并且在删除集合时,不会轻松放弃磁盘空间。你需要运行

 db.repairDatabase()
.

一旦开心,您可以安全地删除旧的MongoDB数据目录,然后将新的ONE复制到它。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top