我在生产中使用 mongodb 并启用了日志。我使用 mongodb 来存储应用程序数据,还使用 gridfs 来存储图像。我为每个 mongodb 实例使用 10GB 的弹性块存储 (EBS)(副本上共有 3 个实例)。
当我检查磁盘使用情况时,我惊讶地发现日志文件夹几乎使用了所有空间。以下为详细内容。
bitnami@ip-172-31-25-9:~/stack/mongodb/data/db$ pwd
/home/bitnami/stack/mongodb/data/db
bitnami@ip-172-31-25-9:~/stack/mongodb/data/db$ du -h *
65M admin.0
16M admin.ns
65M bhs.0
129M bhs.1
257M bhs.2
513M bhs.3
16M bhs.ns
3.1G journal
64M local.0
1.1G local.1
16M local.ns
4.0K mongod.lock
4.0K _tmp
bitnami@ip-172-31-25-9:~/stack/mongodb/data/db$ df -h journal
Filesystem Size Used Avail Use% Mounted on
/dev/xvda1 9.8G 7.0G 2.4G 76% /
Run Code Online (Sandbox Code Playgroud)
然而,当我对数据进行 mongodump 时,我发现导出的数据大小只有 500MB。即大部分空间被期刊使用。我了解日志确实保留了导致文件大小过大的每个写入操作的详细信息。但令我惊讶的是它没有删除旧交易。
理想情况下,我相信在写入事务刷新到磁盘后,应该删除日志。该日记文件夹大小是否符合预期?或者我缺少一些配置?我是否应该考虑尽快增加磁盘容量?
请指教。
MongoDB(用于 MMAP 存储引擎)默认分配 3 个日志文件,每个文件 1GiB。这就是与日志相关的空间使用量的来源,但除非您有非常高的插入率,否则它不会增长。
如果您愿意,您可以从小文件选项开始,将大小减少到 3 x 128MiB,但请注意,您的数据文件也将减少(每个 512MiB),因此数据文件会更多,需要分配它们添加数据时更频繁。
至于是否增加存储,这取决于您打算向数据库添加多少数据 - 它需要分配新的数据文件来存储您插入的任何数据,因此这实际上取决于您计划使用的10GiB够不够。