我的分片有三个副本集,但我注意到本地数据库每个副本集节点都生成了大量 local.* 数据文件。mongodb 存储数据文件的磁盘大小约为 50G,但 local.* 数据文件占用了 22G。实际数据根本不需要 1GB(目前)。我读了磁盘空间过大文章中指出,本地数据库应该只占用 5% 的磁盘空间。
我仍然不知道是否应该设置--oplogSize
,-fallocate
或--noprealloc
开关,以及它如何影响其他复制的数据库。
# ll mongo -h
total 23G
-rw------- 1 mongod mongod 64M Mar 26 10:20 test.0
-rw------- 1 mongod mongod 128M Mar 1 14:03 test.1
-rw------- 1 mongod mongod 16M Mar 26 10:19 test.ns
-rw------- 1 mongod mongod 64M Mar 26 10:20 production.0
-rw------- 1 mongod mongod 128M Feb 29 18:28 production.1
-rw------- 1 mongod mongod 16M Mar 23 17:39 production.ns
drwxr-xr-x 2 mongod mongod 4.0K Feb 29 18:28 journal
-rw------- 1 mongod mongod 64M Feb 29 18:01 local.0
-rw------- 1 mongod mongod 128M Feb 29 18:00 local.1
-rw------- 1 mongod mongod 2.0G Feb 29 18:00 local.10
-rw------- 1 mongod mongod 2.0G Feb 29 18:00 local.11
-rw------- 1 mongod mongod 2.0G Mar 26 10:20 local.12
-rw------- 1 mongod mongod 2.0G Mar 26 10:20 local.2
-rw------- 1 mongod mongod 2.0G Feb 29 18:00 local.3
-rw------- 1 mongod mongod 2.0G Feb 29 18:00 local.4
-rw------- 1 mongod mongod 2.0G Feb 29 18:00 local.5
-rw------- 1 mongod mongod 2.0G Feb 29 18:00 local.6
-rw------- 1 mongod mongod 2.0G Feb 29 18:00 local.7
-rw------- 1 mongod mongod 2.0G Feb 29 18:00 local.8
-rw------- 1 mongod mongod 2.0G Feb 29 18:00 local.9
-rw------- 1 mongod mongod 16M Mar 26 10:19 local.ns
-rwxr-xr-x 1 mongod mongod 6 Feb 29 18:01 mongod.lock
drwxr-xr-x 2 mongod mongod 4.0K Mar 1 14:03 _tmp
我在 centos 6.2/64bit 上使用 mongodb 2.0.4。
更新:当我在本地数据库中查询集合 oplog.rs 时,我得到了以下信息:
PRIMARY> db.oplog.rs.count();
130234
答案1
啊,我在 df 中看错了行。/
是 50G,但数据存储在另一个已安装的卷中,我们有 1.8 T,所以 5% 规则现在有意义了(这意味着它仍然可能增长到 ~90G)。所以我将使用该--oplogSize
参数,因为这个大小对于我们的用例来说有点过大。
(但是,--oplogSize 似乎无法改变现有日志的大小,我必须先检查是否可以删除这些文件)。
答案2
这是 MongoDB 中的正常行为。Mongo 服务器在安装后会保留部分磁盘空间。