PERBARUI: dengan compact
perintah dan WiredTiger sepertinya ruang disk ekstra akan benar-benar dilepaskan ke OS.
PERBARUI: pada v1.9+ ada compact
perintah.
Perintah ini akan melakukan pemadatan "in-line". Ini masih membutuhkan ruang ekstra, tetapi tidak sebanyak itu.
MongoDB mengompresi file dengan:
- menyalin file ke lokasi baru
- membolak-balik dokumen dan memesan ulang / menyelesaikannya kembali
- mengganti file asli dengan file baru
Anda dapat melakukan "kompresi" ini dengan menjalankan mongod --repair
atau dengan menghubungkan secara langsung dan menjalankan db.repairDatabase()
.
Dalam kedua kasus, Anda memerlukan ruang di suatu tempat untuk menyalin file. Sekarang saya tidak tahu mengapa Anda tidak memiliki cukup ruang untuk melakukan kompres, namun, Anda memiliki beberapa opsi jika Anda memiliki komputer lain dengan lebih banyak ruang.
- Ekspor database ke komputer lain yang telah menginstal Mongo (menggunakan
mongoexport
) dan kemudian Anda dapat Mengimpor database yang sama (menggunakanmongoimport
). Ini akan menghasilkan database baru yang lebih terkompresi. Sekarang Anda dapat menghentikanmongod
yang asli ganti dengan file database baru dan Anda siap melakukannya. - Hentikan mongod saat ini dan salin file database ke komputer yang lebih besar dan jalankan perbaikan di komputer itu. Anda kemudian dapat memindahkan file database baru kembali ke komputer asli.
Saat ini tidak ada cara yang baik untuk "memadat di tempat" menggunakan Mongo. Dan Mongo pasti bisa menyedot banyak ruang.
Strategi terbaik saat ini untuk pemadatan adalah menjalankan pengaturan Master-Slave. Anda kemudian dapat memadatkan Slave, membiarkannya mengejar dan menggantinya. Aku tahu masih sedikit berbulu. Mungkin tim Mongo akan tampil dengan pemadatan tempat yang lebih baik, tapi saya rasa itu bukan yang teratas dalam daftar mereka. Ruang drive saat ini dianggap murah (dan biasanya memang demikian).