mongodb删除集合后磁盘空间不释放

mongodb删除集合后磁盘空间不释放,只有用db.repairDatabase()去修复才能释放。 

但是在修复的过程中如果出现了非正常的mongodb的挂掉,再次启动时启动不了的,需要先修复才可以, 
可以利用./mongod --repair --dbpath=/data/mongo/ 如果你是把数据库单独的放在一个文件夹中指定dbpath时就指 
向要修复的数据库就可以,修复可能要花费很长的时间,在使用db.repairDatabase()去修复时一定要停掉读写,并且 
mongodb要有备机才可以,不然千万不要随便使用db.repairDatabase()来修复数据库,切记。 

mongos> db.repairDatabase() 
{ "raw" : { "121.42.169.128:27034" : { "ok" : 1 } }, "ok" : 1 } 
4个分片 不知道为啥只清除了128的这个磁盘空间,其他没动静 

{  "_id" : "syslog",  "partitioned" : true,  "primary" : "shard0001" } --发现128是primary 分片 

可能清除只能达到这个效果吧。

时间: 2024-08-20 09:27:41

mongodb删除集合后磁盘空间不释放的相关文章

Linux磁盘空间不释放问题解决办法

   在工作中,我们也许会遇到这样的问题,发现某个磁盘空间快满了,于是,找到一些无用的大文件将其删除后,发现磁盘空间还是没有释放掉,这是什么原因呢?如何解决呢?下面来重现一下整个过程: 查看磁盘空间情况  [@74.114 var]# df -h Filesystem            Size  Used Avail Use% Mounted on /dev/xvda2            9.7G  284M  8.9G   4% / /dev/xvda1            251

mongodb拷贝数据库copyDatabase()。实现释放磁盘空间的方法。

db.copyDatabase("from","to","127.0.0.1:16161"); 将127.0.0.1上的from库.拷贝到to库. 这样做有一个额外的好处.就是from库中可能是删除过数据的库.看我们知道删除数据时磁盘空间是不会被释放的.参考博客里的另一篇文章:mongodb删除集合后磁盘空间不释放 肯能造成占用很大磁盘空间.虽然可以用    db.repairDatabase()修复数据.但这种方法有两个不好的地方.1.在生产上

如何解决无法释放Mac下删除文件磁盘空间

  如何解决无法释放Mac下删除文件磁盘空间         方法/步骤 首先呢,不知道是不是我这里才遇到:删除文件(之后清理掉Trash)或者用rm -rf直接命令行删除后,磁盘空间不释放. df -h或者用About this Mac看,磁盘空间都没变化.inode节点使用情况也没变化.后来没办法,查来查去,发现根目录下有一个.MobileBackups,占据空间巨大.查文档得知,这是Time Machine的本地备份. 问题是:我已经关闭Time Machine了,但是依然会在这里追加东西

Mongodb 删除添加分片与非分片表维护_MongoDB

MongoDB 是一个基于分布式文件存储的数据库.由 C++ 语言编写.旨在为 WEB 应用提供可扩展的高性能数据存储解决方案. MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的. 一.如何移除分片 1.确认balancer已经开启 mongos> sh.getBalancerState() true 2.移除分片 注:在admin db下执行命令. mongos> use admin switched to db admin mon

Mysql InnoDB删除数据后释放磁盘空间的方法_Mysql

Innodb数据库对于已经删除的数据只是标记为删除,并不真正释放所占用的磁盘空间,这就导致InnoDB数据库文件不断增长. 如果在创建数据库的时候设置innodb_file_per_table=1,这样InnoDB会对每个表创建一个数据文件,然后只需要运行OPTIMIZE TABLE 命令就可以释放所有已经删除的磁盘空间. 运行OPTIMIZE TABLE 表名后,虽然最后会报Table does not support optimize, doing recreate + analyze in

linux删除文件后没有释放空间解决办法

今天介绍的是一个很实用的工具:lsof.能够查找到正在占用中的进程. centos安装命令: yum -y install lsof 实例可以看看这位仁兄的博客即可.本博客主已经证实真实可靠! 发现当前磁盘空间使用情况:   [root@ticketb ~]# df -h Filesystem            Size  Used Avail Use% Mounted on /dev/sda1             981M  203M  729M  22% / none        

归档日志物理删除后闪回恢复区空间未释放

连接数据库进去提示ora-00257:archiver error.Connect internal only,until freed. 登录服务器,操作系统验证,登录好久登录不进去 无奈,把oracle服务重启了下,终于登录进去了 查询v$archived_log 里面有2条归档日志记录,但是在磁盘上怎么找都找不到 select * from V$FLASH_RECOVERY_AREA_USAGE;--显示归档日志占用闪回恢复区有98% select sum(percent_space_use

详解清除MongoDB所占用的多余的磁盘空间的方法_MongoDB

首先一点就是mongodb 不会释放已经占用的硬盘空间,即使drop collection也不行,除非drop database.如果一个db曾经有大量的数据一段时间后又删除的话,硬盘空间就是一个问题,如何收回被mongdodb占用的多余空间?方法有两种1. dump & restore mongodump -d databasename -o /path/to/dump_dir echo 'db.dropDatabase()' | mongo <databasename> mongo

Win8如何释放磁盘空间的2个办法

Win8进行磁盘管理释放磁盘空间的方法如下: 方法一: 1.在需要清理的磁盘盘符下选择右键属性,选择常规中的磁盘清理. 2.选择要清理的内容后,点击"确定"即可. 3.提示是否删除点击"删除文件"即可. 4.如果需要删除已经删除安装的程序及还原点.需要点击"清理系统文件". 5.在之后弹出的界面中选择其他选项即可. 方法二 1.桌面点击Win按键,在空白出点击右键.最下方会出现所有程序选项. 2.点击所有程序中的项目. 3.之后提示选择要清理的分