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

硬盘空间回收:

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

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

在mongodb 环境中,切记不能使用kill -9 去将sharding 进行停止。会导致下一次启动时,启动不了。

造成原因

ps aux|grep mongol
kill -9
这个强行杀进程的办法会导致mongodb 数据库出现无法启动的情况。


正确的关闭数据库方式为
use admin

db.shutdownServer()

也可以按照文档粗暴的杀掉它,它内部应该有KILL信号处理程序。
killall mongod
请不要 kill -9 会发生最后文件损坏的情况。
解决方法:进入 mongod 上一次启动的时候指定的 data 目录  –dbpath=/Users/mc2/mongo/db
cd /Users/mc2/mongo/db
删除掉该文件:
rm /Users/mc2/mongo/db/mongo.lock
再执行:
./mongod  –repair
启动
bin/mongod -dbpath /Users/mc2/mongo/db -logpath /Users/mc2/mongo/log.log &


内存回收:

mongodb在插入,删除,更新时会占用内存,并且不主动释放
 
可以使用
 
use admin
db.runCommand({closeAllDatabases:1})
 
来释放
 
 
 
在较高内核版本下
 
可以使用
 
sync
 
echo 3 > /proc/sys/vm/drop_caches






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值