我正在为我的网络抓取项目使用 python、scrapy、MongoDB。我曾经每天抓取 40Gb 数据。mongodb.conf 文件中是否有方法或设置,以便 MongoDB 由于磁盘已满错误而在对 db 应用写锁定之前正常退出?
因为每次我在 MongoDB 中遇到磁盘已满错误的问题。然后我必须手动重新安装 MongoDB 以从 db 中删除写锁。我无法在数据库上运行修复和压缩命令,因为要运行此命令,我还需要可用空间。
MongoDB 在某些情况下不能很好地处理磁盘已满错误,但您不必卸载然后重新安装 MongoDB 即可删除锁定文件。相反,您可以mongod.lock
从这里归档。只要您启用了日记功能,您的数据就应该是好的。当然,在那一刻,您不能向 MongoDB 数据库添加更多数据。
如果您确实从 MongoDB 中删除了数据,您可能不需要repair
并且只有帮助。不压缩数据,所以这仅在您确实删除了数据时才有用。compact
compact
不断添加,然后再删除可能会导致碎片和大量磁盘空间未使用。您可以通过使用可以在集合上设置的userPowerOf2Sizes
选项来防止这种情况发生。compact
通过重写数据库文件也可以缓解这种情况,但正如您所说,您需要可用的磁盘空间。我建议您还添加一些监控,以在您的数据大小达到完整磁盘空间的 50% 时向您发出警告。在这种情况下,仍有大量时间可用于compact
回收未使用的空间。