MongoDBとスペースの使用に問題があります。特に、私はかつてディスク上に合計で110 GB以上ある約6億のレコードの大規模なコレクションを使用していました。最近、データが古くなっているので削除することにしました。そうするために、rockmongoのWebインターフェースを介してコレクションを削除しました。したがって、rockmongoはコレクションを表示しなくなりましたが、ディスク使用量はまったく変わっていません。
データベースをディスク上のデータベースファイルと同期するために実行する必要がある、気付かないクリーンな操作はありますか?
「修復」を実行しようとしましたが、システムにディスク上に十分なスペースがないと不平を言われています...これは、MongoDBによってすべて使用されているためです。
ほとんどのデータベースシステムと同様に、データを削除してもデータベースファイルは縮小されず、データが削除または削除済みとしてマークされ、スペースが再利用されます。
スペースを圧縮するには、db.repairDatabase()
を実行する必要があります ここ
上記のmongodump/drop/mongorestoreのアプローチは技術的な観点からは正常に機能しますが、サービスに影響するイベントになるため、データベースをオフラインにする必要があります。
ダウンタイムなしでこれを実行したい場合、およびMongoDBレプリカセット[1]を使用している場合は、次のように実行できます。
次に、レプリカセット内の他のメンバーのそれぞれについて上記の手順を繰り返します。
[1] https://docs.mongodb.org/manual/tutorial/deploy-replica-set )
これによるとFAQ https://docs.mongodb.com/manual/faq/storage/#faq-disk-size
唯一の方法は、次のことです。