Linux怎么清除mongo缓存,详解清除MongoDB所占用的多余的磁盘空间的方法

首先一点就是mongodb 不会释放已经占用的硬盘空间,即使drop collection也不行,除非drop database。如果一个db曾经有大量的数据一段时间后又删除的话,硬盘空间就是一个问题,如何收回被mongdodb占用的多余空间?方法有两种

1. dump & restore

mongodump -d databasename -o /path/to/dump_dir

echo 'db.dropDatabase()' | mongo

mongorestore -d /path/to/dump_dir

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

2. repair database即在mongo shell中运行

db.repairDatabase()

, 或者

db.runCommand({ repairDatabase: 1 })

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

{ repairDatabase: 1,

preserveClonedFilesOnFailure: ,

backupOriginalFiles: }

repairDatabase是官方文档中认为唯一可以回收硬盘空间的方法。

repairDatabase is the appropriate and the only way to reclaim disk space.

当你有多个shard的且数据量巨大时,dump & restore方法会花费巨大的时间,这时第二种方法的优势就很明显,就是分别在每个shard上运行repairDatabase,结果会快很多。

PS:格式化mongo shell的输出如果数据量大的情况下,mongo shell 默认的输出很乱,几乎没法阅读。我们可以用.pretty() 来解决这样的问题:

db.collection.find().pretty()

这样的输出会漂亮很多,每个field一行,

{

"_id" : ObjectId("5396cd3823e97923ba689ef3"),

"batch" : 66,

"category" : 4,

"cover_imgs" : [

"/post_imgs/5396cd3823e97923ba689ef3/c_2.jpg",

"/post_imgs/5396cd3823e97923ba689ef3/c_3.jpg",

"/post_imgs/5396cd3823e97923ba689ef3/c_4.jpg"

],

"created_at" : ISODate("2014-06-10T09:18:06.383Z"),

"fav_count" : 0,

"host_reply_count" : 338,

"last_reply_date" : "2014-06-17 21:22:00",

"post_date" : "2014-06-06 19:57:00",

"referer" : "http://tieba.baidu.com/f?kw=%B9%C5%D7%B0%B5%E7%CA%D3%BE%E7",

"reply_count" : 716,

"reuse_type" : 2,

"section" : "古装电视剧",

"seq" : 27180,

"serial" : false,

"sort_index" : 0.997,

"source_site" : "贴吧",

"updated_at" : ISODate("2014-06-18T09:04:55.228Z"),

"visible" : true

}

{

"_id" : ObjectId("5396c7ca23e97921fb7de8e4"),

"batch" : 74,

"category" : 4,

}

配置使其成为Default:

添加如下配置到$HOME/.mongorc.js, 如果不存在则创建。

DBQuery.prototype._prettyShell = true

这样就不需要每次使用pretty()方法了,直接db.collection.find()即可。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值