Mongo使用(太多)太多空间

时间:2014-08-23 04:19:17

标签: mongodb diskspace

更新

我起初有一些小型数据库,但自从我放弃了所有数据库(无结果)以解决这个问题。

show dbs显示

config  0.046875GB

find /var/lib/mongo -type f -print0 | sort -z | xargs -0 du -b显示

134217728   /var/lib/mongo/a1/data/journal/j._3
88  /var/lib/mongo/a1/data/journal/lsn
134217728   /var/lib/mongo/a1/data/journal/prealloc.1
134217728   /var/lib/mongo/a1/data/journal/prealloc.2
536608768   /var/lib/mongo/a1/data/local.0
536608768   /var/lib/mongo/a1/data/local.1
536608768   /var/lib/mongo/a1/data/local.2
536608768   /var/lib/mongo/a1/data/local.3
536608768   /var/lib/mongo/a1/data/local.4
536608768   /var/lib/mongo/a1/data/local.5
536608768   /var/lib/mongo/a1/data/local.6
16777216    /var/lib/mongo/a1/data/local.ns
5   /var/lib/mongo/a1/data/mongod.lock
134217728   /var/lib/mongo/a2/data/journal/j._1
88  /var/lib/mongo/a2/data/journal/lsn
134217728   /var/lib/mongo/a2/data/journal/prealloc.1
134217728   /var/lib/mongo/a2/data/journal/prealloc.2
16777216    /var/lib/mongo/a2/data/local.0
33554432    /var/lib/mongo/a2/data/local.1
536608768   /var/lib/mongo/a2/data/local.2
536608768   /var/lib/mongo/a2/data/local.3
536608768   /var/lib/mongo/a2/data/local.4
536608768   /var/lib/mongo/a2/data/local.5
536608768   /var/lib/mongo/a2/data/local.6
536608768   /var/lib/mongo/a2/data/local.7
536608768   /var/lib/mongo/a2/data/local.8
16777216    /var/lib/mongo/a2/data/local.ns
5   /var/lib/mongo/a2/data/mongod.lock
134217728   /var/lib/mongo/b1/data/journal/j._4
88  /var/lib/mongo/b1/data/journal/lsn
134217728   /var/lib/mongo/b1/data/journal/prealloc.1
134217728   /var/lib/mongo/b1/data/journal/prealloc.2
536608768   /var/lib/mongo/b1/data/local.0
536608768   /var/lib/mongo/b1/data/local.1
536608768   /var/lib/mongo/b1/data/local.2
536608768   /var/lib/mongo/b1/data/local.3
536608768   /var/lib/mongo/b1/data/local.4
536608768   /var/lib/mongo/b1/data/local.5
536608768   /var/lib/mongo/b1/data/local.6
16777216    /var/lib/mongo/b1/data/local.ns
5   /var/lib/mongo/b1/data/mongod.lock
16384   /var/lib/mongo/b2/data/journal/j._1
88  /var/lib/mongo/b2/data/journal/lsn
16777216    /var/lib/mongo/b2/data/local.0
33554432    /var/lib/mongo/b2/data/local.1
536608768   /var/lib/mongo/b2/data/local.2
536608768   /var/lib/mongo/b2/data/local.3
536608768   /var/lib/mongo/b2/data/local.4
536608768   /var/lib/mongo/b2/data/local.5
536608768   /var/lib/mongo/b2/data/local.6
536608768   /var/lib/mongo/b2/data/local.7
536608768   /var/lib/mongo/b2/data/local.8
16777216    /var/lib/mongo/b2/data/local.ns
5   /var/lib/mongo/b2/data/mongod.lock
16777216    /var/lib/mongo/config/data/config.0
33554432    /var/lib/mongo/config/data/config.1
16777216    /var/lib/mongo/config/data/config.ns
134217728   /var/lib/mongo/config/data/journal/j._0
88  /var/lib/mongo/config/data/journal/lsn
134217728   /var/lib/mongo/config/data/journal/prealloc.1
134217728   /var/lib/mongo/config/data/journal/prealloc.2
5   /var/lib/mongo/config/data/mongod.lock

超过17GB没有数据! Sheesh。

为什么Mongo占用了这么多空间,我怎么能减少它呢?

1 个答案:

答案 0 :(得分:6)

这些文件是什么?

看起来在您的环境中进行初始安装的人创建了sharded cluster,这可能是两个分片,每个分片都由replica set中的两个数据承载节点支持。他们选择在/var/lib/mongo/的共同路径下为每个节点创建子目录。

根据子目录名称,我猜猜a1a2是碎片a的副本集,b1b1是其中的一部分为碎片b设置的副本集。如果您感到好奇,可以通过检查仍然存在的config database来确认以前的配置。

在一个案例中,在副本集中,每个数据承载节点都有一个预分配的oplog (operation log),用于复制。 oplog存储在oplog.rs数据库中的local集合中。

默认情况下,oplog size占可用磁盘空间的5%(至少在64位Linux系统上),这就是为什么尽管有一个“空”数据库,这些占用了大量磁盘。< / p>

如何安全地清理此数据目录?

如果您只运行一个MongoDB实例,默认情况下它将忽略额外的子目录及其内容。这就是为什么你还有额外的磁盘使用量 - 你已经删除了mongod知道的所有数据库。

如果你想“重置”所有数据并重新开始,你应该:

  • 停止正在运行的mongod实例,例如:sudo service mongod stop
  • 注意:如果您想要确定上一个分片安装中没有延迟mongod进程,您还可以运行:killall mongod; killall mongos
  • 切换到数据目录:cd /var/lib/mongo/
  • 确保您位于预期目录pwd
  • 删除所有文件:rm -r *
  • 重新启动mongod,例如:sudo service mongod start