删除 MongoDB 数据库和集合

Posted

技术标签:

【中文标题】删除 MongoDB 数据库和集合【英文标题】:Deleting MongoDB database and collections 【发布时间】:2014-02-25 08:54:51 【问题描述】:

我在使用 mongoDB 和我当前的 ubuntu 12.04 台式计算机时遇到空间问题。我一直使用默认设置,这意味着数据物理存储在 /var/lib/mongodb 下。当数据库大小大幅增长时,现在我想删除一些集合以在我的硬盘驱动器中留出一些空白空间。我检查了this 和其他方法但是每当我运行删除功能时,我都会收到以下错误消息:

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

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

【问题讨论】:

您应该先将数据文件复制到外部磁盘,否则会删除所有数据:) 但是,原则上可以解决问题。有了更多可用磁盘,您可以有选择地删除数据并使用压缩。或者,您可以尝试对外部磁盘进行 mongodump,删除不需要的集合文件,删除数据文件,然后重新导入数据。不用说,总是有备份。 您也可以尝试删除硬盘上的一些其他文件,以便 mongo 可以获得更多空间并能够进行删除。 【参考方案1】:

Mongodb 非常适合复制数据库,因为您只需将完整的数据目录复制到其他地方,然后您只需将新的 mongod 进程指向它即可。

因此你的步骤是:

查找当前数据目录 将此复制到另一个位置 删除目录中具有 .lock 的所有文件(这会停止 Mongo 从再次加载)

现在使用以下命令启动另一个 mongo:

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

现在这将打开一个新的 mongo 数据库(但在不同的端口上,以避免可能已经运行的 mongod 出现任何问题)。 现在您将在新磁盘上运行一个新的 mongod,而无需删除 collections \ dbs。请记住,Mongodb 是贪婪的,并且不会在您删除集合时自愿放弃磁盘空间。你需要运行

 db.repairDatabase()

一旦你满意了,你就可以安全地删除旧的 mongodb 数据目录,然后将新的数据目录复制到上面。

【讨论】:

以上是关于删除 MongoDB 数据库和集合的主要内容,如果未能解决你的问题,请参考以下文章

mongodb 删除database和删除collection

MongoDB数据库和集合的基本操作

索引及集合管理 - MongoDB从入门到删库

mongodb如何删除集合中的指定键值对???

mongodb集合被误删了,可以恢复吗

MongoDB增删改查操作详解