详解清除MongoDB所占用的多余的磁盘空间的方法
首先一点就是mongodb 不会释放已经占用的硬盘空间,即使drop collection也不行,除非drop database。如果一个db曾经有大量的数据一段时间后又删除的话,硬盘空间就是一个问题,如何收回被mongdodb占用的多余空间?方法有两种
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()即可。
(资源库 www.zyku.net)
您可能感兴趣的文章
- 06-27Linux下MongoDB数据库实现自动备份详解
- 02-18mongodb+php实现简单的增删改查
- 02-18MongoDB的基本安装与管理命令脚本总结
- 02-18Mongodb自增id实现方法
- 02-18mongodb中随机获取1条记录的实现方法
- 02-18MongoDB windows解压缩版安装教程详解
- 02-18PHP MongoDB GridFS 存储文件的方法详解
- 02-18PHP库 查询Mongodb中的文档ID的方法
- 02-18MongoDB远程访问配置步骤详解
- 02-18CentOS 7下用yum快速安装MongoDB的方法教程
- 03-13帝国CMS获取信息内容页地址函数sys_Re
- 02-14红米k30s选区区域截屏操作方法
- 07-05Linux uupick命令
- 01-13兼职招工作帮手-兼职招工作帮手应用软
- 06-05Yii2中简单的场景使用介绍
- 03-13Linux查看系统版本的方法汇总
- 01-11敏捷家园-敏捷家园应用软件功能介绍
- 07-05Linux pwunconv命令
- 01-11兔子视频编辑器-兔子视频编辑器应用软
- 10-28苹果12怎样启用5g网络
最近更新
阅读排行
猜你喜欢
- 07-04小米门锁添加新用户教程
- 01-11六年级上册英语帮-六年级上册英语帮应
- 02-11Linux 改变文件大小的方法
- 12-21魅族16sPro查看手机型号方法介绍
- 01-24华为mate40单手模式使用方法
- 02-12小米11背部轻敲功能开启教程
- 12-09iqoo8热点开启及设置教程介绍
- 01-12DS cam-DS cam应用软件功能介绍
- 12-09火车头采集器代码过滤方法
- 10-01numbers表格雷达图设置方法介绍