zoukankan      html  css  js  c++  java
  • mongoDB 删除集合后,空间不释放的解决方法

      mongoDB 删除集合后,空间不释放,添加新集合,没有重新利用之前删除集合所空出来的空间,也就是数据库大小只增不减。

    方法有:

    1、导出导入 dump & restore

    2、修复数据库 repair database

    3、复制数据库 db.copyDatabase(“from”,”to”,”127.0.0.1:27017”);

    4、重新同步复制集

    方法一:导出导入 dump & restore

    所需时间根据数据库实际大小而定,如果数据量不大,dump不需要太长时间的情况下,或者经常备份有dump文件的情况下,这种方法很简单。

    备份

    #Mongodump –h IPAddress --port 27017 –d DatabaseName –u UserName –p Password –authenticationDatabase admin –o backup_dir

    恢复

    #Mongorestore –h IPAddress --port 27017 –d DatabaseName –u UserName –p Password –authenticationDatabase admin backup_dir

    方法二:修复数据库 repair database

      需要停机,即便你不停机的话 mongodb 自己也会锁住直到 repair 完成。注意要有足够的磁盘空间,需要额外一倍的空间,如果mongodb 占用了100G,那么 repair 时还需要额外的100G+2G 空间。可以追加磁盘,然后将目标目录指向新加的磁盘。

    我理解到官网的意思是,在确认修复过程不中断并且有足够的空闲空间的前提下,那么这个repair database方法是回收磁盘空间唯一合适的方法(注意前提啊)。

     # mongod --dbpath /data/db --repair --repairpath /data/db0

        如果当前磁盘足够的话可直接在 mongo 命令行中运行:

        >  db.repairDatabase()

         或者

         > db.runCommand({ repairDatabase: 1 })

    第二种方法可以带其他几个参数

    { repairDatabase: 1,

    preserveClonedFilesOnFailure: <boolean>,

    backupOriginalFiles: <boolean> }

    只要磁盘空间够基本上没什么问题。

           这种方法有两个不好的地方。1.在生产上操作如果意外停止可能会造成数据无法恢复的危险。2.如果磁盘空间不足,小于现在这个db时间占有的空间,这种情况是用不了    db.repairDatabase()的。

    方法三:复制数据库 db.copydatabase

    1.db.copyDatabase("from","to","127.0.0.1:27017");复制出一个新的to数据库。这个已经是最小数据占用的数据。会在数据目录下产生to的相关数据文件。127.0.0.1:27017是from的数据库所在的地址和端口号。

    2.将所有程序的配置从from库改为to库。

    3删除from库。

    >use from

    > db.dropDatabase()

    这个方法的好处是可以时间将磁盘上的数据删除掉。节省出很大的空间。

    方法四:重新同步复制集

      还没整理好,后续再补充。

      最后,附上官网对于这个问题解决方法的链接:https://docs.mongodb.com/v2.6/faq/storage/#how-do-i-reclaim-disk-space

  • 相关阅读:
    转自MicrosoftDDOS处理参考如何:强化 TCP/IP 堆栈安全
    [原创]x.509证书在WCF中的应用(CS篇)
    ExtJs学习笔记(17)_table布局
    Javascript生成GUID
    ExtJs学习笔记(18)_ExtJs嵌入FCK示例
    ExtJs学习笔记(12)_Anchor布局
    再谈web.config/app.config敏感数据加/解密的二种方法
    [转自雨痕]LINQ to SQL Delay Loaded
    ExtJs学习笔记(1)_Hello World!
    aspx超时问题容易忽略的细节
  • 原文地址:https://www.cnblogs.com/ddbear/p/7111661.html
Copyright © 2011-2022 走看看