• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • MsSql
  • Mysql
  • oracle
  • MariaDB
  • DB2
  • SQLite
  • PostgreSQL
  • MongoDB
  • Redis
  • Access
  • 数据库其它
  • sybase
  • HBase
您的位置:首页 > 数据库 >MongoDB > 详解清除MongoDB所占用的多余的磁盘空间的方法

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

作者:Hunk Shi 字体:[增加 减小] 来源:互联网 时间:2017-05-11

Hunk Shi通过本文主要向大家介绍了mongodb详解,mongodb 空间索引,mongodb,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>
mongorestore -d <databasename> /path/to/dump_dir
</div>

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

2. repair database
即在mongo shell中运行

db.repairDatabase()
</div>

, 或者

db.runCommand({ repairDatabase: 1 })
</div>

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

{ repairDatabase: 1,
 preserveClonedFilesOnFailure: <boolean>,
 backupOriginalFiles: <boolean> }
</div>

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()
</div>

这样的输出会漂亮很多,每个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,
}
</div>

配置使其成为Default:
添加如下配置到$HOME/.mongorc.js, 如果不存在则创建。

DBQuery.prototype._prettyShell = true
</div>

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

</div>
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • MongoDB 游标详解及实例代码
  • Mongodb如何开启用户访问控制详解
  • window平台安装MongoDB数据库图文详解
  • MongoDB 导出导入备份恢复数据详解及实例
  • 详解MongoDB中创建集合与删除集合的操作方法
  • 详解清除MongoDB所占用的多余的磁盘空间的方法
  • 详解MongoDB管理命令
  • MongoDB安全配置详解
  • MongoDB系列教程(七):MongoDb数据结构详解
  • mongodb 数据库操作详解--创建,切换,删除

相关文章

  • 2017-05-11深究从MongoDB的ObjectId中获取时间信息
  • 2017-05-11MongoDB快速入门笔记(一)之windows下安装MongoDB方法
  • 2017-05-11MongoDB安装到windows服务的方法及遇到问题的完美解决方案
  • 2017-05-11centos yum 安装 mongodb 以及php扩展
  • 2017-05-11python实现爬虫数据存到 MongoDB
  • 2017-05-11Mongodb启动命令参数中文说明
  • 2017-05-11解决mongodb在ubuntu下启动失败,提示couldn‘t remove fs lock errno:9 Bad file descriptor的错误
  • 2017-05-11MongoDB导出查询结果到文件例子
  • 2017-05-11MongoDB的基础查询和索引操作方法总结
  • 2017-05-11MongoDB错误32-bit servers don't have journaling enabled by default解决方法

文章分类

  • MsSql
  • Mysql
  • oracle
  • MariaDB
  • DB2
  • SQLite
  • PostgreSQL
  • MongoDB
  • Redis
  • Access
  • 数据库其它
  • sybase
  • HBase

最近更新的内容

    • 十个提高MongoDB安全性的配置技巧
    • MongoDB的索引
    • MongoDB在Windows平台的安装及配置方法
    • MongoDB中的bson介绍和使用实例
    • MongoDB系列教程(八):GridFS存储详解
    • MongoDB系列教程(二):MongoDB简介
    • mongodb 命令行下及php中insert数据详解
    • MongoDB入门教程(包含安装、常用命令、相关概念、使用技巧、常见操作等)
    • mongodb 常见问题处理方法收集
    • MongoDB分片测试

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有