gpt4 book ai didi

mongodb - 定期回收磁盘空间,无需停机

转载 作者:可可西里 更新时间:2023-11-01 10:31:23 27 4
gpt4 key购买 nike

我们有一个副本集,其中包含 1 个主节点、1 个辅助节点和 1 个仲裁节点。我们经常删除集合,所以我正在寻找一种快速的方法来回收已删除集合所使用的磁盘空间而无需停机,当前数据库大小接近 3TB。我一直在研究执行此操作的各种方法,两种常见方法是:

  1. repairDatabase():需要与已用空间大小相等的可用空间才能运行,它将使主服务器离线,然后在辅助服务器上启动初始同步,这是一个非常漫长的过程,在此期间仅一个节点在修复数据库期间只能从辅助数据库读取,并在初始同步期间可读/写。

  2. 在新节点上运行初始同步,然后声明为主节点并淘汰旧节点。对二级重复该过程。使用此选项,主要和次要都可用,但过程非常漫长,需要将近 1 周的时间来运行两次初始同步。

是否有更好的定期回收磁盘空间的解决方案,并且比上述解决方案相对更快。

请注意,每个集合都可能会被删除。

谢谢

最佳答案

没有简单的方法来实现这一点,除非您设计数据库结构以将不同的集合保存在不同的数据库中,这反过来意味着只要您拥有 directoryPerDB 在您的 mongo.conf 中设置为 true。这是一种解决方法,根据您的应用,它可能不切实际。

虽然删除集合确实不会释放硬盘空间,但已用空间并没有丢失也是事实。它最终将被重新用于新的收藏。

话虽这么说,除非您真的空间不足,否则不要回收该空间。在我所知道的每个提供商中,定期执行此操作的 CPU 和 I/O 成本远高于存储容量成本。

关于mongodb - 定期回收磁盘空间,无需停机,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24125886/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com