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