重複の可能性:
mongodb で削除されたスペースを自動圧縮しますか?
私の理解では、削除操作では、MongoDB はディスク領域を解放しませんが、必要に応じて再利用します。
- あれは正しいですか?
- そうでない場合は、修復コマンドを実行しますか?
- ライブ mongo インスタンスで修復を実行できますか?
重複の可能性:
mongodb で削除されたスペースを自動圧縮しますか?
私の理解では、削除操作では、MongoDB はディスク領域を解放しませんが、必要に応じて再利用します。
db.repairDatabase()
、mongodb シェルから実行してデータベースのサイズを縮小できます。これは、このMongoDBの質問と多少重複しています...
方法の詳細については、その回答を参照してください...
また、この関連ブログ投稿を見ることができます: http://learnmongo.com/posts/compacting-mongodb-data-files/
システムをロックする余裕がない場合、または 2 倍のストレージがない場合は、db.repairDatabase() を実行するよりもうまく機能する別のソリューションがあります。
レプリカ セットを使用している必要があります。
私の考えでは、ディスクを飲み込んでいる余分なデータをすべて削除したら、セカンダリ レプリカを停止し、そのデータ ディレクトリを消去してから起動し、マスターと再同期させます。他のセカンダリについても、一度に 1 つずつ繰り返します。
マスターで、rs.stepDown() を実行して MASTER を同期されたセカンダリの 1 つに渡します。次に、これを停止し、ワイプして、再同期させます。
このプロセスには時間がかかりますが、rs.stepDown() を実行すると、ダウン タイムは数秒しかかからないはずです。