Saat instans MongoDB berkembang, pengecualian penyimpanan—seperti disk hampir penuh, pertumbuhan cepat, dan koleksi yang terlalu banyak diindeks—dapat menyebabkan penurunan layanan sebelum Anda menyadarinya. Analisis penyimpanan di CloudDBA menyediakan tampilan terpusat mengenai penggunaan penyimpanan untuk instans ApsaraDB for MongoDB berupa replica set dan sharded cluster, mendeteksi pengecualian secara otomatis, serta memungkinkan Anda mereklaim ruang disk melalui defragmentasi tanpa downtime.
Prasyarat
Sebelum memulai, pastikan bahwa:
Instans merupakan replica set atau sharded cluster yang menjalankan versi yang didukung:
Versi mesin utama Versi mesin minor Didukung MongoDB 4.0 3.0.x Tidak MongoDB 4.2 4.0.0–4.0.22 Tidak MongoDB 4.2 >= 4.0.23 Ya MongoDB 4.4 5.0.0–5.0.6 Tidak MongoDB 4.4 >= 5.0.7 Ya MongoDB 5.0 Upgrade or downgrade cloud computers Ya MongoDB 6.0 Upgrade or downgrade cloud computers Ya MongoDB 7.0 Upgrade or downgrade cloud computers Ya MongoDB 8.0 Upgrade or downgrade cloud computers Ya Jika Anda adalah pengguna Resource Access Management (RAM), akun Anda memiliki izin AliyunHDMFullAccess atau AliyunHDMReadOnlyAccess pada Database Autonomy Service (DAS). Untuk detailnya, lihat Bagaimana cara menggunakan DAS sebagai pengguna RAM?
Lihat penggunaan penyimpanan
Masuk ke Konsol Database Apsara untuk Konsol MongoDBKonsol MongoDB.
Pada panel navigasi kiri, klik Replica Set Instances atau Sharded Cluster Instances.
Di pojok kiri atas halaman, pilih kelompok sumber daya dan wilayah untuk instans tersebut.
Klik ID instans, atau klik Manage di kolom Actions.
Pada panel navigasi kiri halaman detail instans, pilih CloudDBA > Storage Analysis.
Pada tab Storage Overview, tinjau bagian-bagian berikut:
Storage — Metrik utama untuk kesehatan penyimpanan secara keseluruhan:
Metric Description Action Exception Jumlah pengecualian penyimpanan yang terdeteksi. Pengecualian muncul ketika: penggunaan penyimpanan melebihi 90%, penyimpanan yang tersedia kemungkinan habis dalam tujuh hari, atau satu koleksi memiliki lebih dari 10 indeks. Tangani pengecualian segera. Penyimpanan yang habis dan tidak terselesaikan dapat memblokir operasi write dan menurunkan performa instans. Avg Daily Increase in Last Week Rata-rata pertumbuhan penyimpanan harian selama tujuh hari terakhir. Rumus: (Penyimpanan tersedia saat pengumpulan data − Penyimpanan tersedia tujuh hari lalu) / 7. Mengasumsikan trafik stabil — nilai kurang akurat setelah impor massal, penghapusan data, migrasi instans, atau pembangunan ulang instans. Gunakan ini untuk memproyeksikan kebutuhan kapasitas dan merencanakan peningkatan penyimpanan sebelum ruang disk habis. Available Days of Storage Perkiraan jumlah hari hingga penyimpanan habis. Rumus: Penyimpanan tersedia / Rata-rata peningkatan harian dalam tujuh hari terakhir. Nilai 90+ berarti penyimpanan mencukupi untuk waktu yang akan datang. Mengasumsikan trafik stabil. Jika nilainya rendah (misalnya, di bawah 14 hari), perluas penyimpanan atau arsipkan data untuk membebaskan ruang. Used Storage Jumlah penyimpanan yang digunakan dan total kapasitas penyimpanan yang dialokasikan ke instans. Pantau metrik ini bersama dengan Exception untuk melacak kesehatan penyimpanan secara keseluruhan. Exceptions — Detail dari setiap pengecualian penyimpanan yang terdeteksi. Gunakan informasi ini untuk merencanakan tindakan korektif.
Storage Trend — Tren penggunaan penyimpanan selama tujuh hari terakhir.
Tablespaces — Rincian penyimpanan berdasarkan koleksi. Klik nama koleksi untuk melihat indeksnya.
Untuk melihat penyimpanan berdasarkan ruang data, klik tab Data Space. Klik nama ruang data untuk melihat detail namespace-nya, atau klik nama koleksi untuk melihat indeksnya.
Analisis penyimpanan dapat menganalisis hingga 20.000 koleksi. Jika tidak ada hasil yang muncul, periksa apakah jumlah koleksi melebihi batas ini atau apakah akun saat ini memiliki izin untuk mengakses koleksi tersebut. Untuk memberikan otorisasi ulang, lihat Berikan izin untuk analisis penyimpanan.
Defragmentasi disk
Seiring waktu, operasi delete dan update meninggalkan ruang terfragmentasi dalam koleksi. Defragmentasi mereklaim ruang tersebut dan mengembalikan efisiensi disk.
Defragmentasi hanya berjalan pada node hidden. Untuk melakukan defragmentasi pada node primary atau secondary, ubah dulu perannya menjadi node hidden, atau jalankan perintah compact secara langsung. Untuk langkah alih bencana primary/secondary, lihat Primary/Secondary failover. Untuk menjalankan compact secara manual, lihat Defragmentasi disk instans untuk meningkatkan pemanfaatan disk.
Pilih metode defragmentasi
Gunakan tabel berikut untuk memutuskan antara defragmentasi otomatis dan manual:
| Skenario | Metode yang direkomendasikan |
|---|---|
| Banyak koleksi dengan ruang daur ulang kecil (masing-masing di bawah 100 GB) | Defragmentasi otomatis |
| Satu koleksi dengan ruang daur ulang besar | Defragmentasi manual |
| Ruang daur ulang melebihi 100 GB untuk satu koleksi | Defragmentasi manual (wajib — defragmentasi otomatis melewati koleksi ini) |
Siapkan defragmentasi otomatis
Konfigurasikan rencana defragmentasi agar DAS secara otomatis mereklaim ruang terfragmentasi selama jendela pemeliharaan.
DAS menjalankan defragmentasi otomatis pada koleksi yang memenuhi semua kondisi berikut:
Jumlah penyimpanan indeks dan data melebihi 1 GB
Laju fragmentasi melebihi 20%
Total ruang daur ulang di semua koleksi yang memenuhi syarat pada node hidden tidak melebihi 100 GB per putaran
Untuk mengonfigurasi defragmentasi otomatis:
Pada bagian Tablespaces di halaman Analisis Penyimpanan, temukan koleksi target dan klik Recycle di kolom Fragmentation Rate.
Pada dialog Recycle, konfigurasikan pengaturan rencana defragmentasi, termasuk jendela pemeliharaan.
Klik OK.
Defragmentasi disk secara manual
Masuk ke Konsol MongoDB ApsaraDB for MongoDB console.
Pada panel navigasi kiri, klik Replica Set Instances atau Sharded Cluster Instances.
Di pojok kiri atas halaman, pilih kelompok sumber daya dan wilayah untuk instans tersebut.
Klik ID instans, atau klik Manage di kolom Actions.
Pada panel navigasi kiri halaman detail instans, pilih CloudDBA > Storage Analysis.
Pada bagian Tablespaces, temukan koleksi yang akan didefragmentasi dan klik Recycle di kolom Fragmentation Rate.
Pada dialog Recycle, buka bagian Collection with High Fragmentation Rate, temukan koleksi tersebut, lalu klik Recycle di kolom Actions.
Pilih Execute Now atau Run in the O & M window, lalu konfirmasi.
Defragmentasi tidak berlaku serta-merta. Perintah compact terus berjalan di latar belakang — waktu reklaim aktual bergantung pada ukuran data yang didefragmentasi.Defragmentasi hingga 10 koleksi secara bersamaan. Tunggu batch saat ini selesai sebelum memulai batch berikutnya. Memulai batch baru saat batch sebelumnya masih berjalan dapat menyebabkan tugas gagal.
Jika laju fragmentasi rendah, jumlah ruang yang direklaim mungkin kecil.
Jika ruang daur ulang suatu koleksi melebihi 100 GB, defragmentasi mungkin memerlukan waktu lebih dari satu jam.
Verifikasi hasil defragmentasi
Setelah tugas defragmentasi selesai, klik Re-analyze untuk memperbarui hasil analisis penyimpanan.
Efektivitas defragmentasi bergantung pada distribusi data. Jika ruang yang direklaim lebih sedikit dari yang diharapkan, jalankan kembali tugas defragmentasi.
Berikan izin untuk analisis penyimpanan
Jika tidak ada hasil analisis penyimpanan yang muncul, akun tersebut mungkin tidak memiliki izin yang diperlukan pada koleksi-koleksi tersebut.
Untuk memberikan otorisasi ulang pada akun, pilih salah satu metode berikut:
Menggunakan akun yang sudah ada:
Di bagian atas halaman Analisis Penyimpanan, klik Re-authorize.
Masukkan username dan password di bidang Database Account dan Password.
Klik OK.
Using a generated authorization command:
Di bagian atas halaman Analisis Penyimpanan, klik Re-authorize.
Masukkan username dan password di bidang Database Account dan Password.
Klik Generate Authorization Command.
Klik OK.
FAQ
Apa arti error (Interrupted) Compaction interrupted on table:*** due to cache eviction pressure?
Instans yang ingin Anda defragmentasikan disk-nya merupakan versi lama dan memiliki spesifikasi rendah. Saat Anda menjalankan perintah compact pada instans tersebut, instans gagal karena tekanan eviksi cache yang tinggi.
Pilih waktu lain untuk mencoba ulang tugas tersebut. Jika terus gagal, kirim tiket dukungan.
Referensi API
| Operasi | Deskripsi |
|---|---|
| CreateStorageAnalysisTask | Membuat tugas analisis penyimpanan untuk mengkueri detail penggunaan satu atau beberapa database dan koleksi |
| GetStorageAnalysisResult | Mengkueri status dan hasil tugas analisis penyimpanan |
Langkah selanjutnya
Untuk instans yang menjalankan versi MongoDB sebelum 4.0, lihat Defragmentasi disk instans untuk meningkatkan pemanfaatan disk.
Untuk melakukan failover primer/sekunder sebelum defragmentasi, lihat failover primer/sekunder.