MongoDB menangani migrasi data antar shard melalui proses penyeimbang. Penyeimbang bertanggung jawab untuk memastikan bahwa data didistribusikan secara merata di seluruh shard dalam cluster shard. Berikut adalah langkah-langkah yang terlibat dalam migrasi data antar shard:
1. Penyeimbangan
- Penyeimbangan Otomatis: MongoDB secara otomatis menyeimbangkan data dengan memigrasikan potongan dari satu pecahan ke pecahan lainnya. Hal ini memastikan bahwa data didistribusikan secara merata di seluruh pecahan.
2. Migrasi Potongan
- Migrasi Manual: MongoDB dapat melakukan migrasi potongan manual untuk koleksi tertentu. Ini berguna untuk mendistribusikan data selama penyisipan massal.
3. Migrasi Jangkauan
- Migrasi Rentang Otomatis: MongoDB memigrasikan data satu rentang dalam satu waktu. Penyeimbang tidak menunggu hingga fase penghapusan migrasi saat ini selesai sebelum memulai migrasi rentang berikutnya.
4. Membagikan ulang
- Teknik Reshard-to-Shard: MongoDB menggunakan resharding untuk menyebarkan data ke seluruh shard di cluster dengan cepat. Hal ini melibatkan sharding secara sengaja ke dalam kunci shard sementara yang berbeda dari kunci shard yang diinginkan, lalu melakukan sharding ulang ke dalam kunci shard yang diinginkan.
5. Prosedur Migrasi Potongan
- Pecahan Sumber: Pecahan sumber mulai dipindahkan ketika menerima perintah internal. Selama proses migrasi, operasi ke potongan dikirim ke pecahan sumber.
- Pecahan Tujuan: Pecahan tujuan membuat indeks apa pun yang diperlukan oleh sumber yang tidak ada di tujuan. Pecahan tujuan mulai meminta dokumen dalam potongan dan mulai menerima salinan data.
- Sinkronisasi: Setelah menerima dokumen akhir dalam potongan, pecahan tujuan memulai proses sinkronisasi untuk memastikan bahwa ada perubahan pada dokumen yang dimigrasikan yang terjadi selama migrasi.
- Pembaruan Metadata: Pecahan sumber terhubung ke database konfigurasi dan memperbarui metadata kluster dengan lokasi baru untuk potongan tersebut.
- Fase Hapus: Setelah pecahan sumber menyelesaikan pembaruan metadata, dan setelah tidak ada kursor terbuka pada potongan tersebut, pecahan sumber akan menghapus salinan dokumennya[3][5].
6. Potongan Jumbo
- Jumbo Chunks: Jika sebuah bongkahan melebihi ukuran maksimum atau jumlah dokumen dalam bongkahan tersebut melebihi jumlah maksimum yang diperbolehkan, MongoDB tidak akan memigrasikan bongkahan tersebut. Sebaliknya, MongoDB mencoba untuk membagi bagian tersebut. Jika pemisahan tidak berhasil, MongoDB memberi label pada potongan tersebut sebagai jumbo untuk menghindari upaya berulang kali untuk memigrasikan potongan tersebut[3].
7. Pemantauan dan Pemeliharaan
- Pemantauan: MongoDB menyediakan alat untuk memantau proses penyeimbang dan memastikan bahwa data didistribusikan secara merata di seluruh shard.
- Pemeliharaan: MongoDB memberikan perintah untuk mengelola penyeimbang dan memastikan bahwa migrasi data efisien dan terukur.
Kesimpulan
MongoDB menangani migrasi data antar shard melalui proses penyeimbang, yang memastikan bahwa data didistribusikan secara merata di seluruh shard dalam kluster shard. Penyeimbang memigrasikan data satu rentang pada satu waktu, dan MongoDB menyediakan alat untuk memantau dan mengelola proses penyeimbang.
Kutipan:[1] https://stackoverflow.com/questions/48438644/migration-data-between-shards-with-mongodb
[2] https://hackernoon.com/optimize-data-migration-in-mongodb-resharding-techniques-for-speed-and-scalability
[3] https://www.mongodb.com/docs/v3.0/core/sharding-chunk-migration/
[4] https://www.mongodb.com/community/forums/t/shard-migration-leads-to-service-disruption/247228
[5] https://www.mongodb.com/docs/v6.2/core/sharding-balancer-administration/