Topik ini menjelaskan cara melepaskan ruang disk instance ApsaraDB for MongoDB.
Informasi latar belakang
WiredTiger digunakan sebagai mesin penyimpanan default mulai MongoDB 3.2. Parameter storage.directoryPerDB:true didefinisikan pada ApsaraDB for MongoDB. Setiap database disimpan di disk sebagai folder terpisah, dan koleksi adalah file terpisah dalam folder tersebut. Untuk informasi lebih lanjut tentang parameter storage.directoryPerDB:true, lihat storage.directoryPerDB.
Prosedur
1. Periksa apakah ada indeks, koleksi, atau database yang tidak digunakan. Jalankan perintah dropIndexes, drop, atau dropDatabase untuk menghapus indeks, koleksi, atau database yang tidak digunakan. Setelah perintah dijalankan, file akan dihapus segera untuk melepaskan ruang disk.
2. Periksa apakah ada dokumen yang tidak diperlukan. Jalankan perintah delete untuk menghapus dokumen yang tidak diperlukan. Seperti MySQL, dokumen MongoDB yang dihapus hanya diberi tag penghapusan, menunjukkan bahwa ruang penyimpanan yang sesuai ditandai sebagai bebas dan menunggu untuk digunakan kembali. Oleh karena itu, perintah delete tidak dapat melepaskan ruang disk secara langsung. Jika Anda ingin melepaskan ruang disk segera, lakukan langkah berikutnya.
3. Periksa apakah ada banyak ruang bebas di koleksi. Jalankan perintah collStats untuk membandingkan bidang StorageSize dan freeStorageSize, lalu jalankan perintah compact untuk mengklaim kembali ruang fisik bebas. Untuk informasi lebih lanjut, lihat Defragment a disk to improve disk usage.
Anda harus menjalankan perintah
compactdi setiap node.Pada versi sebelum MongoDB 4.4, semua operasi lainnya diblokir saat Anda menjalankan perintah
compact. Lanjutkan dengan hati-hati.Gunakan metode cursor.forEach untuk menyalin semua dokumen ke koleksi baru, lalu ubah nama koleksi untuk melepaskan ruang disk. Ini hanya berlaku untuk skenario offline.