All Products
Search
Document Center

ApsaraDB for MongoDB:Mengapa melakukan upgrade ke versi MongoDB yang lebih baru

Last Updated:Mar 28, 2026

MongoDB 4.4 mencapai akhir masa pakai (End of Life/EOL) pada Februari 2024. Melanjutkan penggunaan versi EOL berarti Anda tidak lagi menerima patch keamanan, perbaikan bug, atau dukungan. Lebih penting lagi, tim ApsaraDB for MongoDB telah mendokumentasikan bug kernel spesifik dan risiko operasional pada versi 4.4 dan sebelumnya — beberapa di antaranya berkategori Keparahan Tinggi — yang hanya dapat diselesaikan dengan melakukan upgrade.

Lakukan upgrade ke MongoDB 5.0, 6.0, 7.0, atau 8.0. Untuk tanggal siklus hidup versi, lihat Jadwal Siklus Hidup.

Risiko pada versi sebelumnya

Tim ApsaraDB for MongoDB mengidentifikasi risiko berikut berdasarkan pengalaman operasional database cloud jangka panjang.

Dokumen yatim menyebabkan inkonsistensi data selama migrasi

  • Versi yang terdampak: Instans kluster sharded yang menjalankan MongoDB 4.2 atau lebih baru

  • Versi perbaikan: MongoDB 4.4 atau lebih baru

Setelah sebuah chunk dimigrasikan dari shard sumber ke shard tujuan, shard sumber menyimpan chunk tersebut sementara sebelum dihapus. Gangguan migrasi meninggalkan dokumen yatim. Dokumen yatim tidak memengaruhi permintaan pada node mongos karena permintaan diperiksa oleh data routing dari node ConfigServer. Namun, dokumen yatim menumpuk dan menyebabkan inkonsistensi data selama migrasi berikutnya.

MongoDB 4.4 memperkenalkan migrasi chunk self-recovery dan pembersihan otomatis dokumen yatim. Jika node gagal di tengah migrasi, MongoDB secara otomatis melanjutkan proses tersebut — tidak perlu menjalankan cleanupOrphaned secara manual. Jalankan perintah tersebut hanya untuk memastikan bahwa thread pembersihan latar belakang aktif.

Untuk detailnya, lihat cleanupOrphaned.

Perintah compact memblokir operasi baca dan tulis

  • Versi yang terdampak: Semua arsitektur yang menjalankan MongoDB 4.2 atau lebih lama

  • Versi perbaikan: MongoDB 4.4 atau versi yang lebih baru

Menjalankan compact untuk melakukan defragmentasi disk pada MongoDB 4.2 atau lebih lama memblokir semua operasi baca dan tulis selama durasi eksekusi. Operasi ini tidak dapat diinterupsi, sehingga satu-satunya opsi pemulihan adalah me-restart instans, yang berdampak pada kelangsungan bisnis.

MongoDB 4.4 mengoptimalkan perilaku locking dari compact sehingga operasi CRUD tidak diblokir. Hanya beberapa operasi DDL — createIndex dan dropIndex — yang terpengaruh secara singkat. Jadwalkan eksekusi compact di luar jendela pemeliharaan Anda.

Catatan

Untuk melakukan defragmentasi disk, kami merekomendasikan agar Anda menggunakan fitur analisis penyimpanan yang disediakan oleh ApsaraDB for MongoDB.

Untuk detailnya, lihat Defragmentasi disk instans dan pemblokiran compact.

Perintah compact menyebabkan node memasuki status RECOVERING

  • Versi yang terdampak: Semua arsitektur dengan versi utama MongoDB 4.2 atau lebih lama dan versi minor sebelum 4.2.18

  • Versi perbaikan: MongoDB 4.4 atau lebih baru

Pada versi yang terdampak, menjalankan compact menyebabkan node mongos memasuki status RECOVERING. Jika node tetap dalam status ini cukup lama, komponen aktivasi ApsaraDB for MongoDB menganggapnya tidak sehat dan memicu rebuild, menyebabkan downtime tak terencana.

Mulai dari MongoDB 4.2.18, node mongos tidak lagi memasuki status RECOVERING setelah menjalankan compact, sehingga mencegah ketidaktersediaan node dan alur rebuild yang tidak diharapkan.

Catatan

Untuk melakukan defragmentasi disk, kami merekomendasikan agar Anda menggunakan fitur analisis penyimpanan yang disediakan oleh ApsaraDB for MongoDB.

Untuk detailnya, lihat Defragmentasi disk instans dan RECOVERING pada compact.

Cadangan fisik pada node tersembunyi mengonsumsi ruang disk berlebihan

  • Versi yang terdampak: Semua arsitektur yang menjalankan MongoDB 4.2 atau lebih lama yang menggunakan disk lokal

  • Versi perbaikan: MongoDB 5.0 atau versi yang lebih baru (disk cloud)

Mekanisme cadangan fisik pada instans berbasis disk lokal menyebabkan ukuran file disk terus bertambah selama unggah cadangan. File besar yang terakumulasi mengonsumsi ruang disk signifikan dan memicu peringatan penggunaan disk yang salah selama kegagalan node atau alih bencana.

Instans berbasis disk cloud menggabungkan cadangan fisik dengan snapshot disk, mengurangi waktu yang diperlukan untuk mempertahankan checkpoint cadangan WiredTiger (WT) dan menyelesaikan pembengkakan ruang disk pada node tersembunyi. Untuk instans set replika dengan data lebih dari 2 TB, gunakan cadangan snapshot untuk menghindari waktu pencadangan yang lama, tingkat kegagalan tinggi, dan konflik operasi O&M yang terjadi pada pencadangan fisik berbasis disk lokal.

Data routing sisa merusak database yang dibuat ulang dengan nama yang sama

  • Versi yang terdampak: Instans kluster sharded yang menjalankan MongoDB 4.4 atau lebih lama

  • Versi perbaikan: MongoDB 5.0 atau lebih baru

Saat Anda menghapus database dengan dropDatabase di kluster sharded lalu membuat ulang database dengan nama yang sama, data routing sisa di node ConfigServer menyebabkan operasi baca dan tulis gagal.

Pada MongoDB 4.2 atau lebih lama, Anda harus menjalankan dropDatabase berulang kali lalu menjalankan flushRouterConfig pada semua node mongos untuk membersihkan data routing — jika tidak, data sisa akan menurunkan performa.

MongoDB 5.0 mengoptimalkan penanganan data routing dropDatabase sehingga data routing secara otomatis dibersihkan, menghilangkan kebutuhan pembersihan manual ini.

Untuk detailnya, lihat dropDatabase dan flushRouterConfig.

Kepedulian tulis default {w:1} menyebabkan kegagalan sinkronisasi data pada node secondary

  • Versi yang terdampak: Semua arsitektur yang menjalankan versi sebelum MongoDB 5.0

  • Versi perbaikan: MongoDB 5.0 atau versi yang lebih baru

Dengan kepedulian tulis default {w:1}, data yang ditulis cepat ke node primary mungkin hanya sebagian yang sampai ke node secondary, menyebabkan node tersebut memasuki status RECOVERING. Hal ini menurunkan ketersediaan instans, mengganggu workload pemisahan baca/tulis, dan mencegah cadangan inkremental serta pemulihan pada titik waktu.

MongoDB 5.0 mengubah kepedulian tulis default dari {w:1} menjadi {w:"majority"}. Data hanya dapat di-query setelah mayoritas anggota set replika mengonfirmasi tulisan tersebut, meningkatkan keandalan data dengan sedikit penurunan performa. Untuk skenario throughput tulis tinggi di mana Anda dapat menerima perilaku sebelumnya, atur kembali kepedulian tulis ke {w:1}.

Untuk informasi selengkapnya, lihat Default Write Concern dan setDefaultRWConcern.

Balancer melakukan rebalance data terlalu lambat untuk mendukung scale-out

  • Versi yang terdampak: Semua arsitektur yang menjalankan versi sebelum MongoDB 5.0

  • Versi perbaikan: MongoDB 5.0 atau lebih baru

Balancer tidak dapat memigrasikan chunk cukup cepat untuk melakukan rebalance data selama kejadian scale-out, yang menurunkan performa karena data tetap terdistribusi tidak merata di seluruh shard.

MongoDB 5.0 menambahkan parameter chunkMigrationConcurrency dan balancerMigrationsThrottlingMs sehingga Anda dapat menyesuaikan konkurensi dan throughput migrasi balancer sesuai workload Anda.

Catatan

Jika instans Anda sudah menggunakan MongoDB 5.0 tetapi parameter ini tidak tersedia, lakukan update ke versi minor yang lebih baru. Lihat Update versi minor instans.

Untuk detailnya, lihat chunkMigrationConcurrency dan balancerMigrationsThrottlingMs.

Pemimbangan berbasis jumlah chunk menyebabkan ketidakseimbangan beban di kluster sharded

  • Versi yang terdampak: Semua arsitektur dengan versi utama MongoDB 5.0 atau lebih lama dan versi minor sebelum 6.0.3

  • Versi perbaikan: MongoDB 6.0 atau lebih baru

Balancer mendistribusikan data berdasarkan jumlah chunk, bukan volume data. Ketika chunk jumbo atau chunk kosong ada — atau ketika subset data menerima trafik yang jauh lebih tinggi — chunk tampak seimbang berdasarkan jumlah, tetapi shard membawa beban yang tidak seimbang.

MongoDB 6.0.3 mengubah balancer untuk mendistribusikan data berdasarkan perbedaan volume data di seluruh shard, bukan jumlah chunk. Hal ini menyelesaikan ketidakseimbangan beban yang disebabkan oleh chunk jumbo, chunk kosong, dan pola data panas.

Untuk detailnya, lihat Perubahan pada balancer di MongoDB 6.0.3.

Masalah kernel lainnya

Tabel berikut mencantumkan masalah kernel tambahan pada versi MongoDB sebelumnya yang diidentifikasi oleh tim ApsaraDB for MongoDB.

VersiMasalahTingkat risikoPemicu dan deskripsi
MongoDB 3.4SERVER-34192 SERVER-20328 SERVER-21307SedangPemicu: Pemisahan baca/tulis diaktifkan. Masalah: Lock global diambil saat node secondary mereplay oplog, menyebabkan permintaan lambat.
MongoDB 4.0SERVER-70783RendahPemicu: Jumlah koneksi server meningkat signifikan. Masalah: Assertion dipicu oleh sesi yang tidak mencukupi, menyebabkan kegagalan node mongos dan alih bencana.
MongoDB 3.6–4.2SERVER-40535RendahPemicu: Kadang-kadang. Masalah: Error Cache Reader No keys found for HMAC that is valid for time; diperlukan logika retry.
MongoDB 4.2 atau lebih lamaSERVER-43641 SERVER-51803RendahPemicu: Kadang-kadang; terkait dengan /dev/urandom. Masalah: Node mongos crash dan pulih otomatis setelah restart.
MongoDB 4.0–4.2SERVER-43889RendahPemicu: Kadang-kadang. Masalah: Server tidak dapat membedakan transaksi dari tulisan yang dapat diulang, menyebabkan kegagalan permintaan.
MongoDB 4.0–4.4SERVER-51281 SERVER-50365TinggiPemicu: Transaksi berjalan lama. Masalah: Cache tulis tembus gagal melakukan evict, baris cache kotor melebihi 20%, dan thread pembersihan transaksi macet — menyebabkan peningkatan latensi permintaan signifikan dan penurunan performa.
MongoDB 3.6–4.4SERVER-52654TinggiPemicu: Node ConfigServer belum melakukan switch dalam 90 hari. Masalah: Kegagalan pembuatan kunci Hash-based Message Authentication Code (HMAC) pada node ConfigServer menyebabkan node mongos crash dan gagal pulih otomatis.
MongoDB 4.0–4.4SERVER-53566SedangPemicu: Kadang-kadang. Masalah: Error assertion opContext menyebabkan mongod crash dan memicu alih bencana.
MongoDB 4.4 atau lebih lamaSERVER-21307TinggiPemicu: Operasi DDL dicatat dalam oplog selama pembuatan indeks latar belakang pada node secondary. Masalah: Operasi DDL diblokir dan node secondary gagal.
MongoDB 4.4 atau lebih lamaWT-5809SedangPemicu: Restart node atau inisialisasi sinkronisasi data. Masalah: Masalah pengurutan temporal di history store WiredTiger memicu error assertion WT, menyebabkan mongod crash.
MongoDB 4.2–4.4SERVER-51041TinggiPemicu: Pemisahan baca/tulis diaktifkan dan beban node secondary tinggi. Masalah: Kontensi mutex thread POSIX menghabiskan tiket baca pada node secondary, menurunkan performa.
MongoDB 4.2–4.4SERVER-52556 SERVER-66176SedangPemicu: Aplikasi sering memanggil listCollections. Masalah: Kontensi lock mutex pada komponen CollectionCatalog dasar menurunkan performa secara signifikan.
MongoDB 6.0 atau lebih lamaSERVER-63865 SERVER-67038 SERVER-69877TinggiPemicu: Error kehabisan memori (OOM) selama pembuatan indeks. Masalah: Mongod berulang kali restart dan gagal pulih. Jika dua node set replika memasuki kondisi ini, instans menjadi tidak tersedia.
MongoDB 6.0 atau lebih lamaSERVER-56194RendahPemicu: Sejumlah besar dokumen kedaluwarsa setelah membuat indeks Time to Live (TTL) atau memodifikasi waktu kedaluwarsa. Masalah: Thread TTL backend macet dan gagal pulih, menyebabkan fitur TTL berhenti berfungsi.

Fitur baru pada versi yang lebih baru

VersiFiturDeskripsi
MongoDB 5.0Koleksi deret waktuPenyimpanan dan kueri efisien untuk data deret waktu dalam skenario Internet of Vehicles (IoV) dan Internet of Things (IoT).
Kueri snapshot berjalan lamaMembaca snapshot historis tanpa memengaruhi operasi yang sedang berjalan.
Versioned APIMemisahkan siklus hidup aplikasi dari siklus hidup database. Aplikasi tetap sepenuhnya kompatibel meskipun terjadi peningkatan versi database — tidak diperlukan remediasi kompatibilitas.
MongoDB 6.0Aliran perubahanTampilan sebelum perubahan kini tersedia. Efisiensi eksekusi dan pemanfaatan resource ditingkatkan. Pembaruan dokumen yatim dapat difilter. Lebih banyak event perubahan DDL didukung, meningkatkan dukungan Change Data Capture (CDC).
Kueri JOIN di kluster shardedInstans kluster sharded mendukung operator $lookup dan $graphLookup untuk kueri JOIN, dengan peningkatan performa operator.
Defragmentasi otomatis di kluster shardedGunakan configureCollectionBalancing untuk menentukan ukuran chunk per shard dan mengaktifkan defragmentasi otomatis — tidak perlu menjalankan compact secara manual di kluster sharded.
Penyempurnaan koleksi deret waktuDukungan sharding, kompresi kolom untuk mengurangi penggunaan penyimpanan, indeks secondary dan gabungan untuk performa baca, indeks geospasial untuk data spatio-temporal, serta pengurutan deret waktu yang dioptimalkan.
Perintah `compact` yang disempurnakancompact di WiredTiger sepenuhnya dioptimalkan dengan performa yang jauh lebih baik dan lebih sedikit kegagalan akibat evict.
MongoDB 7.0Analisis kunci shardMenganalisis hasil kueri sampel untuk menilai apakah kunci shard koleksi optimal. Gunakan ini untuk mengonfigurasi skema dan kunci shard lebih efisien.
Enkripsi yang dapat di-queryMengenkripsi data sensitif sepanjang siklus hidupnya — dalam transit, saat diam, saat digunakan, dalam log, dan dalam cadangan. Data hanya didekripsi di sisi klien, secara signifikan mengurangi risiko kebocoran data akibat pencurian.
Pemeriksaan konsistensi metadataSecara otomatis mendeteksi inkonsistensi metadata dan indeks setelah jendela pemeliharaan berakhir atau setelah pengecualian seperti error OOM atau failover.
Event perubahan besar di aliran perubahanOperator $changeStreamSplitLargeEvent membagi event perubahan yang lebih besar dari 16 MB, menyelesaikan keterbatasan pada versi sebelumnya di mana event besar menyebabkan kegagalan aliran perubahan.
Pembatasan kecepatan dinamis di WiredTigerMenyesuaikan secara dinamis konkurensi transaksi WiredTiger (default: 128) untuk mencegah kegagalan database akibat akumulasi permintaan setelah pengecualian.
MongoDB 8.0Advanced TCMallocMenggunakan cache per-CPU alih-alih cache per-thread untuk mengurangi fragmentasi memori dan menangani workload lebih berat. Thread latar belakang melepaskan memori ke sistem operasi setiap detik.
Performa replikasi yang dioptimalkanDengan kepedulian tulis diatur ke majority, MongoDB memberikan respons setelah oplog ditulis ke sebagian besar anggota replika, bukan menunggu perubahan diterapkan — meningkatkan throughput tulis. Node secondary juga menulis dan menerapkan batch oplog secara paralel: thread Writer membaca dari primary dan menulis ke oplog lokal, sementara thread Applier menerapkan perubahan ke database lokal secara asinkron.
Resharding yang dioptimalkanPerforma reshardCollection ditingkatkan untuk mengubah kunci shard dan distribusi data koleksi.

Referensi