【问题标题】:Deleting MongoDB database and collections删除 MongoDB 数据库和集合
【发布时间】: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 可以获得更多空间并能够进行删除。

标签: mongodb ubuntu-12.04


【解决方案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 数据目录,然后将新的数据目录复制到上面。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-03-05
    • 1970-01-01
    • 2012-07-12
    • 1970-01-01
    • 1970-01-01
    • 2023-03-06
    相关资源
    最近更新 更多