mongodb系列~回收磁盘空间

一 说明

    由于mongo版本众多,所以本文说明会进行分类汇总

二 版本

    1 <3.2版本 官方版本 : repairDatabase确认并修复数据存储中的错误和不一致的地方,类似于linux下的文件操作命令fsck 。当数据库被意外重启或破坏时,使用repairDatabase命令来确保数据完整。

                      实际操作:压缩数据库中所有的collections,等同于分别在每个collection上进行compact命令。减少了磁盘中数据文件的总大小,并且重建了数据库中的所有索引。

                      需求  repairDatabase操作所需要磁盘的空余空间为当前数据总量再加上2G。如果当前磁盘分区空间不足,可以尝试用 –repairpath 参数指定一个空间足够的分区路径。

                      风险 : Repair过程中,其他所有操作都无法执行,直到修复完成。

                  语句命令 db.runCommand({repairDatabase :1})

 

不仅能整理碎片还可以回收磁盘空间

     2 3.2版本 新的命令compact

                 语句命令 db.tablename.runCommand("compact");

                 风险  加集合所在DB的互斥写锁,会导致该DB上所有的读写请求都阻塞 执行的时间可能很长,跟集合的数据量相关,所以强烈建议在业务低峰期执行,避免影响业务。 适用于 WiredTiger 引擎

三 其他方式

       1 如果只是主本身有问题,可以调整优先级,将主变成从 将从变成主 重新进行同步

       2 可以采用dump restore方式

原文地址:https://www.cnblogs.com/danhuangpai/p/14356007.html