详解清除MongoDB所占用的多余的磁盘空间的方法
2016-06-23 00:00
627 查看
首先一点就是mongodb 不会释放已经占用的硬盘空间,即使drop collection也不行,除非drop database。如果一个db曾经有大量的数据一段时间后又删除的话,硬盘空间就是一个问题,如何收回被mongdodb占用的多余空间?方法有两种
1. dump & restore
如果数据量不大,dump不需要太长时间的情况下,或者经常备份有dump文件的情况下,这种方法很简单。
2. repair database
即在mongo shell中运行
, 或者
, 第二种方法可以带其他几个参数
repairDatabase是官方文档中认为唯一可以回收硬盘空间的方法。
repairDatabase is the appropriate and the only way to reclaim disk space.
当你有多个shard的且数据量巨大时,dump & restore方法会花费巨大的时间,这时第二种方法的优势就很明显,就是分别在每个shard上运行repairDatabase,结果会快很多。
PS:格式化mongo shell的输出
如果数据量大的情况下,mongo shell 默认的输出很乱,几乎没法阅读。我们可以用.pretty() 来解决这样的问题:
这样的输出会漂亮很多,每个field一行,
配置使其成为Default:
添加如下配置到$HOME/.mongorc.js, 如果不存在则创建。
这样就不需要每次使用pretty()方法了,直接db.collection.find()即可。
MongoDB性能篇之创建索引,组合索引,唯一索引,删除索引和explain执行计划
Mongodb 删除添加分片与非分片表维护
MongoDB修改、删除文档的域属性实例
Mongodb批量删除gridfs文件实例
mongodb replica set 添加删除节点的2种方法
mongodb 数据库操作详解--创建,切换,删除
PHP中MongoDB数据库的连接、添加、修改、查询、删除等操作实例
php操作MongoDB基础教程(连接、新增、修改、删除、查询)
MongoDB数据库插入、更新和删除操作详解
1. dump & restore
mongodump -d databasename -o /path/to/dump_dir echo 'db.dropDatabase()' | mongo <databasename> mongorestore -d <databasename> /path/to/dump_dir
如果数据量不大,dump不需要太长时间的情况下,或者经常备份有dump文件的情况下,这种方法很简单。
2. repair database
即在mongo shell中运行
db.repairDatabase()
, 或者
db.runCommand({ repairDatabase: 1 })
, 第二种方法可以带其他几个参数
{ repairDatabase: 1, preserveClonedFilesOnFailure: <boolean>, backupOriginalFiles: <boolean> }
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()即可。
您可能感兴趣的文章:
MongoDB快速入门笔记(六)之MongoDB删除文档操作MongoDB性能篇之创建索引,组合索引,唯一索引,删除索引和explain执行计划
Mongodb 删除添加分片与非分片表维护
MongoDB修改、删除文档的域属性实例
Mongodb批量删除gridfs文件实例
mongodb replica set 添加删除节点的2种方法
mongodb 数据库操作详解--创建,切换,删除
PHP中MongoDB数据库的连接、添加、修改、查询、删除等操作实例
php操作MongoDB基础教程(连接、新增、修改、删除、查询)
MongoDB数据库插入、更新和删除操作详解
相关文章推荐
- 分享微信开发Html5轻游戏中的几个坑
- 如何在 Fedora 上安装 MongoDB 服务器
- PHP添加yaf xhprof mongodb 同理
- mongodb安装
- 如何在 Ubuntu 上安装 MongoDB
- 信息安全聚合 Sec-News 的重构之路
- “百度与站长”更新:关于网站收录,删除,seo等
- 用vbs删除某些类型文件和磁盘空间报告的脚本
- QQ聊天记录删除了怎么恢复简单方法
- vbs删除注册表项的代码
- 迅速删除非法文件名的批处理代码
- 通过批处理实现删除运行、查找等处的历史记录的代码
- Shell中删除某些文件外所有文件的3个方法
- perl操作MongoDB报错undefined symbol: HeUTF8解决方法
- 删除文件提示文件正在被另一个人或程序使用的解决方法
- 关于.LDB文件 .ldb文件的产生 .ldb文件的删除方法
- asp 合并记录集并删除的sql语句
- SQLserver 数据库危险存储过程删除与恢复方法
- sql自增长设置与删除的深入分析
- MySQL删除数据库的两种方法