在MongoDB中,是否可以在不关闭每个实例的情况下运行compact命令?

时间:2020-10-22 05:35:37

标签: mongodb

在服务器结构中,主要,次要和仲裁器都是物理操作的。 mongo db版本是4.2.3。

某些文档以最早的顺序被删除,因为在特定的馆藏中积累了太多的文档。 但是,即使删除文档也不会释放存储区域。 经过检查,我发现mongodb的机制保留了可重用字节,即使删除了文档也是如此。 另外,我发现可以使用WiredTiger引擎中的compact命令释放不必要的磁盘空间。

当前,所有连接到数据库的客户端都使用仲裁IP和端口进行查询。

由于数据库仅由复制而不是分片组成,因此,如果每个人都独立执行紧凑命令,那么即使每个实例都被锁定,也可以期望仲裁程序将查询分发到当前可用实例。

这可能吗?

或者,我应该关闭每个实例,独立运行它,运行compact命令,然后重新配置psa吗?

1 个答案:

答案 0 :(得分:0)

您可以将MonogDB升级到最新版本4.4。 compact的文档:

阻止

在版本4.4中进行了更改。

从v4.4开始,在WiredTiger上,compact仅阻止以下内容 元数据操作:

db.collection.drop
db.collection.createIndex and db.collection.createIndexes
db.collection.dropIndex and db.collection.dropIndexes

compact不会阻止数据库的MongoDB CRUD操作 当前正在运行。

在v4.4之前,compact阻止了该数据库的所有操作 压缩,包括MongoDB CRUD操作,因此 建议仅在计划的维护期内使用。 从v4.4开始,compact命令适用于任何情况 时间。