Seiring dengan berkembangnya komunitas MongoDB, MongoDB memberikan lebih banyak manfaat seperti peningkatan performa, keamanan yang dioptimalkan, dan berbagai fitur tambahan di versi-versi terbaru. Komunitas MongoDB juga secara bertahap menghentikan dukungan dan pemeliharaan untuk versi MongoDB sebelumnya. Jika Anda terus menggunakan versi MongoDB sebelumnya, Anda mungkin menghadapi berbagai masalah serta risiko keamanan dan stabilitas.
MongoDB 4.4 memasuki status Akhir Masa Pakai (EOL) pada Februari 2024 sesuai jadwal siklus hidup perangkat lunak MongoDB. Untuk mendapatkan layanan yang optimal, kami merekomendasikan agar Anda memutakhirkan instans Anda ke versi yang lebih baru, seperti MongoDB 5.0, MongoDB 6.0, MongoDB 7.0, atau MongoDB 8.0. Untuk informasi lebih lanjut, lihat Jadwal Siklus Hidup.
Risiko pada versi sebelumnya
Tim ApsaraDB for MongoDB merangkum risiko pada versi sebelumnya berdasarkan pengalaman operasi dan pemeliharaan database cloud jangka panjang. Bagian ini menjelaskan risiko tersebut dan versi yang direkomendasikan untuk menyelesaikannya.
Ketidaksesuaian data terjadi selama migrasi data karena adanya dokumen yatim di instans kluster sharded
Versi dan arsitektur yang terpengaruh: Instans kluster sharded yang menjalankan MongoDB 4.2 atau lebih baru.
Deskripsi: Jika dokumen yatim tidak dibersihkan di instans kluster sharded, ketidaksesuaian data dapat terjadi selama migrasi.
Versi yang direkomendasikan: MongoDB 4.4 atau lebih baru.
Alasan rekomendasi:
Setelah sebuah chunk dimigrasikan dari shard sumber ke shard baru, chunk di shard sumber dipertahankan selama periode tertentu sebelum dihapus. Dalam banyak kasus, dokumen yatim dihasilkan akibat interupsi migrasi. Dokumen yatim tidak memengaruhi permintaan pada node mongos karena permintaan tersebut diverifikasi oleh data routing node ConfigServer.
MongoDB 4.4 atau lebih baru mendukung pemulihan otomatis migrasi chunk dan pembersihan dokumen yatim secara otomatis. Jika node gagal, MongoDB secara otomatis memulihkan proses migrasi yang terganggu. Anda tidak perlu menjalankan perintah
cleanupOrphaneduntuk membersihkan dokumen yatim. Namun, Anda dapat menjalankan perintah ini untuk memastikan apakah thread backend sedang membersihkan dokumen yatim di instans.Untuk informasi lebih lanjut, lihat cleanupOrphaned.
Operasi compact memblokir permintaan baca dan tulis
Versi dan arsitektur yang terpengaruh: Instans dari semua arsitektur yang menjalankan MongoDB 4.2 atau lebih lama.
Deskripsi: Operasi compact untuk mendefragmentasi disk memblokir permintaan baca dan tulis di versi sebelumnya. Dalam hal ini, Anda harus me-restart instans karena operasi tidak dapat diinterupsi, yang dapat memengaruhi bisnis Anda.
Versi yang direkomendasikan: MongoDB 4.4 atau lebih baru.
Alasan rekomendasi:
Mulai dari MongoDB 4.4, perilaku penguncian perintah compact dioptimalkan sehingga operasi baca dan tulis (CRUD) tidak diblokir, kecuali beberapa operasi DDL seperti
createIndex dan dropIndex. Anda dapat menjalankan perintah compact di luar jendela pemeliharaan yang ditentukan.Untuk informasi lebih lanjut, lihat Defragmentasi disk instans untuk meningkatkan utilisasi disk dan compact Blocking.
CatatanUntuk mendefragmentasi disk, kami merekomendasikan penggunaan fitur analisis penyimpanan yang disediakan oleh ApsaraDB for MongoDB. Untuk informasi lebih lanjut tentang fitur ini, lihat Analisis Penyimpanan.
Operasi compact menyebabkan node memasuki status RECOVERING
Versi dan arsitektur yang terpengaruh: Instans dari semua arsitektur dengan versi utama MongoDB 4.2 atau lebih lama dan versi minor lebih lama dari MongoDB 4.2.18.
Deskripsi: Node di instans yang menjalankan versi sebelumnya memasuki status RECOVERING setelah operasi compact dilakukan. Jika node tetap dalam status tersebut untuk waktu yang lama, komponen aktivasi instans ApsaraDB for MongoDB akan menganggap node tidak sehat dan memicu operasi pembangunan ulang.
Versi yang direkomendasikan: MongoDB 4.4 atau lebih baru.
Alasan rekomendasi:
Mulai dari MongoDB 4.2.18, node mongos tidak memasuki status RECOVERING setelah menjalankan perintah compact. Ini mencegah adanya node mongos yang tidak tersedia dan aliran tugas pembangunan ulang yang tidak diharapkan.
Untuk informasi lebih lanjut, lihat Defragmentasi disk instans untuk meningkatkan utilisasi disk dan compact RECOVERING.
CatatanUntuk mendefragmentasi disk, kami merekomendasikan penggunaan fitur analisis penyimpanan yang disediakan oleh ApsaraDB for MongoDB. Untuk informasi lebih lanjut tentang fitur ini, lihat Analisis Penyimpanan.
Cadangan fisik di node tersembunyi mengonsumsi sejumlah besar ruang disk
Versi dan arsitektur yang terpengaruh: Instans dari semua arsitektur yang menjalankan MongoDB 4.2 atau lebih lama dan menggunakan disk lokal.
Deskripsi: Ukuran file disk terus meningkat selama unggahan cadangan karena mekanisme cadangan fisik. Jika sejumlah besar file disk terakumulasi, ruang disk yang signifikan dikonsumsi. Jika terjadi kegagalan node atau switchover, peringatan salah terkait penggunaan disk dapat dipicu.
Versi yang direkomendasikan: MongoDB 5.0 atau lebih baru (disk cloud).
Alasan rekomendasi:
Cadangan penuh di instans yang menggunakan disk cloud menggabungkan cadangan fisik dengan snapshot disk. Pendekatan ini mengurangi waktu yang diperlukan untuk memelihara titik kontrol cadangan di WiredTiger (WT) dan menyelesaikan pembengkakan ruang disk akibat cadangan pada node tersembunyi di kluster sharded secara efisien.
Snapshot cadangan dan pemulihan data berdasarkan snapshot cadangan yang disediakan oleh instans yang menggunakan disk cloud memberikan kinerja yang lebih baik. Jika jumlah data dalam instans set replika melebihi 2 TB, kami merekomendasikan penggunaan snapshot cadangan untuk mencadangkan data. Dengan cara ini, masalah seperti waktu pencadangan fisik yang lama untuk instans yang menggunakan disk lokal, tingkat kegagalan pencadangan yang tinggi, dan kegagalan untuk melakukan operasi O&M lainnya dapat dihindari.
Data routing ada di instans kluster sharded saat Anda membuat ulang database yang memiliki nama sama dengan database yang telah dihapus
Versi dan arsitektur yang terpengaruh: Instans kluster sharded yang menjalankan MongoDB 4.4 atau lebih lama.
Deskripsi: Saat menjalankan perintah
dropDatabasedi instans kluster sharded dan kemudian membuat ulang database dengan nama yang sama, operasi baca dan tulis tidak dapat dilakukan seperti yang diharapkan karena data routing masih ada di node ConfigServer instans.Versi yang direkomendasikan: MongoDB 5.0 atau lebih baru.
Alasan rekomendasi:
MongoDB 5.0 atau lebih baru mengoptimalkan pemrosesan data routing perintah
dropDatabase. Dengan demikian, data routing tidak ada di instans kluster sharded yang menjalankan MongoDB 5.0 atau lebih baru. Di MongoDB 4.2 atau lebih lama, Anda harus menjalankan perintahdropDatabaseberulang kali dan menjalankan perintahflushRouterConfigdi semua node mongos untuk menyegarkan data routing. Jika tidak, data routing residu dapat menurunkan kinerja database.Untuk informasi lebih lanjut, lihat dropDatabase dan flushRouterConfig.
Sinkronisasi data antara node primer dan sekunder abnormal karena pengaturan writeConcern default {w:1}
Versi dan arsitektur yang terpengaruh: Instans dari semua arsitektur yang menjalankan versi lebih lama dari MongoDB 5.0.
Deskripsi: Jika data dengan cepat ditulis ke node primer instans, node sekunder mungkin hanya menerima sebagian data dan kemudian memasuki status RECOVERING. Ini menurunkan ketersediaan instans. Node sekunder mungkin gagal membaca data yang diharapkan, yang merugikan bisnis yang memerlukan pembagian baca/tulis. Dalam hal ini, pencadangan inkremental tidak dapat dilakukan seperti yang diharapkan, dan data tidak dapat dipulihkan ke titik waktu sebelumnya.
Versi yang direkomendasikan: MongoDB 5.0 atau lebih baru.
Alasan rekomendasi:
Mulai dari MongoDB 5.0, nilai default writeConcern diubah dari
{w:1}menjadi{w:"majority"}. Ini berarti data yang akan ditulis hanya dapat di-query setelah data dikonfirmasi oleh sebagian besar node di instans set replika. Hal ini meningkatkan keandalan data dengan sedikit penurunan performa dan menyelesaikan kehilangan data yang disebabkan oleh respons query lambat atau node primer dalam status ROLLBACK karena sebagian data diterima oleh node sekunder dan kontrol aliran yang dipicu pada node primer.Anda dapat mengatur writeConcern ke
{w:1}dalam skenario yang memerlukan performa tulis tinggi.Untuk informasi lebih lanjut, lihat Default Write Concern dan setDefaultRWConcern.
Balancer mendistribusikan data secara merata dengan kecepatan lambat, memberikan performa penskalaan yang buruk, dan gagal melakukan aktivitas penskalaan keluar selama jam sibuk
Versi dan arsitektur yang terpengaruh: Instans dari semua arsitektur yang menjalankan versi lebih lama dari MongoDB 5.0.
Deskripsi: Balancer tidak dapat memigrasikan data dengan kecepatan lebih tinggi. Akibatnya, data tidak dapat didistribusikan secara merata dengan cepat dalam skenario yang memerlukan aktivitas penskalaan keluar, menurunkan kinerja database.
Versi yang direkomendasikan: MongoDB 5.0 atau lebih baru.
Alasan rekomendasi:
Mulai dari MongoDB 5.0, parameter
chunkMigrationConcurrencydanbalancerMigrationsThrottlingMsditambahkan untuk menyesuaikan konkurensi migrasi dan performa balancer.Untuk informasi lebih lanjut, lihat chunkMigrationConcurrency dan balancerMigrationsThrottlingMs.
CatatanJika instans Anda menjalankan MongoDB 5.0 dan tidak mendukung dua parameter tersebut, perbarui versi minor instans. Untuk informasi lebih lanjut, lihat Perbarui versi minor instans.
Beban di instans kluster sharded didistribusikan secara tidak merata karena ketidakseimbangan data
Versi dan arsitektur yang terpengaruh: Instans dari semua arsitektur dengan versi utama MongoDB 5.0 atau lebih lama dan versi minor lebih lama dari MongoDB 6.0.3.
Deskripsi: Balancer memeriksa distribusi data berdasarkan jumlah chunk di antara shard. Jika terdapat chunk Jumbo dan kosong serta sebagian data sering diakses, ketidakseimbangan data dan beban dapat terjadi di antara shard.
Versi yang direkomendasikan: MongoDB 6.0 atau lebih baru.
Alasan rekomendasi:
Mulai dari MongoDB 6.0.3, balancer mendistribusikan data secara merata berdasarkan perbedaan volume data di antara shard, bukan perbedaan jumlah chunk. Hal ini menyelesaikan ketidakseimbangan data dan beban akibat adanya chunk Jumbo dan kosong serta data yang sering diakses di versi sebelumnya.
Untuk informasi lebih lanjut, lihat Perubahan pada balancer di MongoDB 6.0.3.
Masalah kernel lainnya
Versi | Masalah kernel | Tingkat risiko | Deskripsi |
MongoDB 3.4 | Sedang | [Penyebab]: Pembagian baca/tulis diaktifkan untuk instans Anda. [Deskripsi masalah]: Kunci global ditambahkan saat node sekunder memainkan ulang oplog, yang menyebabkan permintaan lambat. | |
MongoDB 4.0 | Rendah | [Penyebab]: Jumlah koneksi di server meningkat secara signifikan. [Deskripsi masalah]: Aserksi mungkin dipicu karena sesi yang tidak mencukupi. Dalam hal ini, node mongos gagal dan switchover node dipicu. | |
MongoDB 3.6 hingga MongoDB 4.2 | Rendah | [Penyebab]: Sesekali. [Deskripsi masalah]: Anda menerima kesalahan | |
MongoDB 4.2 atau lebih lama | Rendah | [Penyebab]: Sesekali. Masalah ini terkait dengan [Deskripsi masalah]: Node mongos crash. Node tersebut secara otomatis pulih dari kegagalan setelah node di-restart. | |
MongoDB 4.0 hingga MongoDB 4.2 | Rendah | [Penyebab]: Sesekali. [Deskripsi masalah]: Server tidak dapat membedakan transaksi dengan benar dari penulisan yang dapat dicoba ulang, yang menyebabkan permintaan gagal dan kesalahan. | |
MongoDB 4.0 hingga MongoDB 4.4 | Tinggi | [Penyebab]: Transaksi jangka panjang. [Deskripsi masalah]: Cache write-through gagal dievict seperti yang diharapkan, dan persentase baris cache kotor melebihi 20%. Thread yang membersihkan transaksi timeout mungkin macet, yang menyebabkan peningkatan latensi permintaan secara signifikan dan kinerja database menurun. | |
MongoDB 3.6 hingga MongoDB 4.4 | Tinggi | [Kondisi pemicu]: Node ConfigServer tidak beralih selama 90 hari. [Deskripsi masalah]: Masalah terkait pembuatan kunci Hash-based Message Authentication Code (HMAC) pada node ConfigServer menyebabkan node mongos crash dan gagal pulih secara otomatis dari kegagalan. | |
MongoDB 4.0 hingga MongoDB 4.4 | Sedang | [Penyebab]: Sesekali. [Deskripsi masalah]: Kesalahan asersi yang dipicu oleh opContext menyebabkan mongod crash dan switchover dipicu. | |
MongoDB 4.4 atau lebih lama | Tinggi | [Penyebab]: Operasi DDL direkam dalam oplog saat indeks sedang dibuat di node sekunder di backend. [Deskripsi masalah]: Operasi DDL diblokir dan node sekunder gagal. | |
MongoDB 4.4 atau lebih lama | Sedang | [Penyebab]: Node di-restart atau sinkronisasi data diinisialisasi. [Deskripsi masalah]: Dalam proses pemulihan node, masalah terkait menentukan urutan temporal history store di WT memicu kesalahan asersi WT, yang menyebabkan mongod crash. | |
MongoDB 4.2 hingga MongoDB 4.4 | Tinggi | [Penyebab]: Pembagian baca/tulis diaktifkan untuk instans Anda, dan beban pada node sekunder tinggi. [Deskripsi masalah]: Saat thread POSIX bersaing untuk kunci mutex, tiket baca pada node sekunder habis dan kinerja database menurun. | |
MongoDB 4.2 hingga MongoDB 4.4 | Sedang | [Penyebab]: Aplikasi Anda sering memanggil operasi listCollections. [Deskripsi masalah]: Masalah terkait kunci mutex dalam komponen CollectionCatalog yang mendasari secara signifikan menurunkan kinerja database. | |
MongoDB 6.0 atau lebih lama | Tinggi | [Penyebab]: Kesalahan kehabisan memori (OOM) terjadi di instans yang menjalankan versi sebelumnya saat indeks sedang dibuat untuk instans. [Deskripsi masalah]: Mongod di-restart berulang kali dan gagal pulih secara otomatis dari kegagalan. Jika dua node dalam instans set replika memasuki status ini, instans menjadi tidak tersedia. | |
MongoDB 6.0 atau lebih lama | Rendah | [Penyebab]: Sejumlah besar dokumen kedaluwarsa dihasilkan setelah Anda membuat indeks Time to Live (TTL) atau memodifikasi waktu kedaluwarsa. [Deskripsi masalah]: Thread TTL backend macet dan gagal pulih secara otomatis dari kegagalan. Ini menyebabkan fitur TTL tidak berfungsi. |
Fitur baru dan optimasi di versi terbaru
Versi | Fitur baru atau optimasi | Deskripsi |
MongoDB 5.0 | Koleksi deret waktu | Mulai dari MongoDB 5.0, data deret waktu dapat diproses dengan cara yang lebih efektif dalam skenario seperti Internet of Vehicles (IoV) dan Internet of Things (IoT). |
Kueri snapshot jangka panjang | Mulai dari MongoDB 5.0, snapshot historis dapat dibaca. | |
API Versi. | Mulai dari MongoDB 5.0, fitur API versi didukung. Fitur ini memisahkan siklus hidup aplikasi dari siklus hidup database dan memastikan kompatibilitas penuh. Anda tidak perlu menangani risiko kompatibilitas yang disebabkan oleh pemutakhiran versi database. | |
MongoDB 6.0 | ChangeStream | Mulai dari MongoDB 6.0, ChangeStream dioptimalkan dalam aspek berikut:
|
Kueri JOIN | Instans kluster sharded ApsaraDB for MongoDB yang menjalankan MongoDB 6.0 atau lebih baru mendukung operator | |
Defragmentasi otomatis di instans kluster sharded | Instans kluster sharded ApsaraDB for MongoDB yang menjalankan MongoDB 6.0 atau lebih baru memungkinkan Anda menjalankan perintah | |
Koleksi deret waktu | Mulai dari MongoDB 6.0, koleksi deret waktu dioptimalkan dalam aspek berikut:
| |
Perintah compact yang ditingkatkan | ApsaraDB for MongoDB sepenuhnya mengoptimalkan perintah compact di WT. Ini secara signifikan meningkatkan performa perintah dan mengurangi kegagalan yang disebabkan oleh proses eviction selama eksekusi perintah. | |
MongoDB 7.0 | Analisis kunci shard | Mulai dari MongoDB 7.0, Anda dapat menentukan apakah kunci shard suatu koleksi masuk akal berdasarkan hasil kueri sampel. Dengan cara ini, Anda dapat mengonfigurasi skema dan kunci shard untuk instans Anda dan menggunakan arsitektur kluster sharded secara lebih efisien. |
Enkripsi yang dapat di-query | Mulai dari MongoDB 7.0, enkripsi yang dapat di-query memastikan bahwa data sensitif dienkripsi sepanjang masa pakai data dan hanya didekripsi di klien. Masa pakai data mencakup fase berikut: transmisi, saat diam, saat digunakan, pencatatan, dan pencadangan. Fitur ini memastikan keamanan data yang lebih baik dan komprehensif serta secara efektif mengurangi risiko kebocoran data yang disebabkan oleh pencurian data. | |
Pemeriksaan konsistensi metadata | MongoDB 7.0 atau lebih baru dapat secara otomatis mendeteksi potensi risiko ketidaksesuaian metadata atau indeks setelah periode pemeliharaan database berakhir atau tidak terjadi pengecualian seperti kesalahan OOM atau failover. | |
Peristiwa perubahan besar yang ditangani oleh ChangeStream | Mulai dari MongoDB 7.0, operator | |
Throttling dinamis di WT | MongoDB 7.0 atau lebih baru secara dinamis menyesuaikan konkurensi transaksi WT untuk menerapkan throttling. Secara default, konkurensi transaksi WT diatur ke 128. Ini menyelesaikan kegagalan database yang disebabkan oleh permintaan yang terakumulasi setelah pengecualian di versi sebelumnya. | |
MongoDB 8.0 | TCMalloc Lanjutan | Mulai dari MongoDB 8.0, TCMalloc lanjutan digunakan.
|
Optimasi performa replikasi |
| |
Optimasi performa resharding | Mulai dari MongoDB 8.0, performa |