Apa saja opsi untuk memigrasikan data dari MongoDB ke Azure DocumentDB?

Artikel ini membantu Anda merencanakan dan menjalankan migrasi dari MongoDB ke Azure DocumentDB. Ini mencakup alat migrasi yang tersedia, fase utama migrasi, dan praktik terbaik untuk mengurangi risiko dan meminimalkan waktu henti.

Baik Anda bermigrasi dari server MongoDB lokal, VM yang dihosting cloud, atau layanan MongoDB terkelola, opsi migrasi, panduan, dan praktik terbaik dalam artikel ini berlaku.

Fase migrasi utama

Migrasi yang berhasil mengikuti fase yang berbeda ini. Setiap fase memiliki tujuan dan kriteria keberhasilan tertentu.

1. Menilai

Jalankan pemindaian otomatis MongoDB sumber Anda dengan menggunakan ekstensi Migrasi Azure DocumentDB untuk mengidentifikasi fitur, perintah, sintaks kueri, dan jenis indeks yang tidak didukung. Penilaian ini juga memberikan gambaran umum tentang versi MongoDB, lisensi, jenis instans, dan metrik database dan koleksi. Gunakan temuan ini untuk merencanakan perubahan skema dan mengidentifikasi pemfaktoran ulang yang diperlukan sebelum migrasi.

Tip

Sebaiknya tinjau fitur dan sintaks MongoDB Query Language (MQL) yang didukung secara rinci dan lakukan bukti konsep sebelum migrasi aktual.

2. Persiapkan

Analisis laporan penilaian dan ukur TPS sumber (transaksi per detik). Jalankan migrasi uji coba pada data perwakilan untuk menetapkan tingkat komputasi target, Tingkat Penyimpanan, dan jumlah shard. Lakukan pengujian performa untuk memastikan konfigurasi target memenuhi kebutuhan Anda.

3. Memperhalus

Siapkan koleksi target dengan kunci shard dan indeks yang sesuai dengan pola kueri produksi Anda. Jika menggunakan beberapa pecahan, putuskan cara mendistribusikan koleksi di seluruh pecahan untuk menyeimbangkan beban dan meminimalkan operasi pecahan silang.

4. Migrasi

Jalankan pekerjaan migrasi untuk memindahkan data dalam mode offline atau online:

  • Migrasi offline: Mengambil rekam jepret sumber di awal dan menyalinnya secara massal ke target. Setiap data yang ditambahkan, diperbarui, atau dihapus pada data sumber setelah pengambilan rekaman tidak disalin. Waktu henti yang diperlukan tergantung pada berapa lama penyalinan massal berlangsung.
  • Migrasi online: Melakukan salinan massal yang sama dengan offline, tetapi juga memantau aliran perubahan sepanjang proses. Perubahan yang dilakukan selama migrasi direplikasi ke target, sehingga waktu henti aplikasi yang diperlukan minimal. Memerlukan aliran perubahan dan oplog yang cukup besar pada sumbernya.

Tip

Untuk migrasi online, pastikan bahwa aliran perubahan diaktifkan dan oplog berukuran tepat pada MongoDB sumber Anda untuk menangkap semua perubahan selama jendela migrasi.

Untuk alat yang tersedia, lihat Alat migrasi.

5. Validasi

Validasi bahwa semua data telah disalin, termasuk pembaruan terbaru. Bandingkan jumlah dokumen, jalankan validasi berbasis sampel, dan verifikasi bahwa indeks dan struktur data sesuai dengan harapan pada target. Gunakan skrip otomatis untuk membuat validasi dapat diulang dan konsisten.

6. Peralihan

Pindahkan lalu lintas baca ke target dan verifikasi tidak ada masalah fungsi atau performa. Setelah validasi baca berhasil, pindahkan lalu lintas tulis ke target. Pantau dengan cermat selama jendela cutover untuk anomali apa pun.

Alat migrasi

Alat yang dibahas dalam artikel ini membantu Anda memigrasikan beban kerja MongoDB Anda dari sumber berikut:

  • Komputer Virtual MongoDB
  • MongoDB Atlas
  • AWS DocumentDB

Azure Ekstensi Migrasi DocumentDB

Buat dan kelola pekerjaan migrasi Anda di Visual Studio Code dengan Ekstensi Migrasi Azure DocumentDB (Pratinjau Umum) — solusi yang dirancang untuk kesederhanaan, keamanan, dan waktu henti nol.

Alat ini menyediakan panduan langkah demi langkah yang jelas untuk membantu Anda memigrasikan beban kerja tanpa gangguan layanan. Kamu bisa:

  • Pilih database dan koleksi tertentu untuk migrasi
  • Lakukan semua langkah dalam antarmuka Visual Studio Code yang sudah dikenal
  • Memastikan konektivitas yang aman sepanjang proses
  • Nikmati biaya nol untuk menggunakan ekstensi

Dengan Azure DocumentDB Migration Extension, Anda dapat menyederhanakan perjalanan migrasi sambil mempertahankan kontrol dan keamanan — semuanya tanpa infrastruktur atau kompleksitas tambahan.

Utilitas Aplikasi Web (Online)

Sederhanakan migrasi Anda ke Azure DocumentDB dengan MongoMigrationwebBasedUtility alat yang dirancang untuk efisiensi, keandalan, dan kemudahan penggunaan. Repositori ini menawarkan instruksi langkah demi langkah terperinci untuk memigrasikan beban kerja Anda. Alat ini menawarkan pengalaman yang mulus untuk migrasi data online dan offline. Prosesnya ramah pengguna, hanya memerlukan detail sumber dan target yang akan disediakan. Ini memungkinkan Anda dengan mudah memigrasikan koleksi MongoDB sambil mempertahankan kontrol, keamanan, dan skalabilitas, membuka potensi penuh Azure DocumentDB.

Fitur utama meliputi:

  • Mendukung penyebaran privat dalam jaringan virtual Anda untuk keamanan yang ditingkatkan
  • Kemampuan resume otomatis jika ada kehilangan koneksi atau kesalahan sementara
  • Antarmuka yang mudah digunakan
  • Akses ke kode sumber C# di GitHub

Alat ini mendukung opsi penyebaran yang fleksibel dan beroperasi secara independen tanpa dependensi pada sumber daya Azure lainnya. Selain itu, ini menawarkan performa yang dapat diskalakan dengan paket harga Azure Web App yang dapat disesuaikan.

Perangkat Natif MongoDB (Offline)

Anda juga dapat menggunakan alat MongoDB asli seperti mongodump/mongorestore, mongoexport/mongoimport untuk memigrasikan himpunan data secara offline (tanpa mereplikasi perubahan langsung) ke penawaran Azure DocumentDB.

Scenario Alat bawaan MongoDB
Memindahkan subset dari data database (berbasis JSON/CSV) mongoexport/mongoimport
Memindahkan seluruh database (berbasis BSON) mongodump/mongorestore
  • mongoexport/mongoimport adalah pasangan alat migrasi terbaik untuk memigrasi subset database MongoDB Anda.
    • mongoexport mengekspor data Anda yang ada ke file JSON atau CSV yang dapat dibaca manusia. mongoexport mengambil argumen yang menentukan subset dari data Anda yang ada untuk diekspor.
    • mongoimport membuka file JSON atau CSV dan menyisipkan konten ke dalam instans database target (Azure DocumentDB dalam kasus ini.).
    • JSON dan CSV bukan format yang ringkas; Anda dapat dikenakan biaya jaringan berlebih karena mongoimport mengirim data ke Azure DocumentDB.
  • mongodump/mongorestore adalah sepasang alat migrasi terbaik untuk memigrasikan seluruh database MongoDB Anda. Format BSON yang ringkas membuat penggunaan sumber daya jaringan yang lebih efisien saat data dimasukkan ke dalam Azure DocumentDB.
    • mongodump mengekspor data Anda yang sudah ada sebagai file BSON.
    • mongorestore mengimpor cadangan file BSON Anda ke Azure DocumentDB.

Nota

Alat asli MongoDB hanya dapat memindahkan data secepat yang diizinkan perangkat keras host.

Praktik terbaik migrasi

Gunakan praktik terbaik ini untuk mengurangi risiko, memperkirakan kapasitas secara lebih akurat, meningkatkan kecepatan migrasi, dan menjalankan cutover dengan aman.

Mengurangi kegagalan

  • Gunakan kata sandi yang dikodekan URL dalam string koneksi. Karakter khusus seperti @, #, dan : dapat memecah penguraian saat tidak dikodekan. Pengodean URL membantu menghindari kegagalan koneksi selama penilaian dan migrasi berjalan.

  • Jalankan penilaian pramigrasi sebelum migrasi. Penilaian membantu Anda mengidentifikasi fitur yang tidak didukung, kesenjangan kompatibilitas, dan pemblokir potensial lebih awal. Atasi temuan sebelum migrasi untuk mengurangi pekerjaan ulang selama cutover.

  • Lakukan latihan migrasi dan cutover sebelum produksi. Jalankan satu atau beberapa migrasi latihan di lingkungan nonproduksi. Praktik meningkatkan akurasi waktu, kesiapan tim, dan keyakinan selama cutover produksi.

Mengukur infrastruktur secara akurat

  • Jalankan migrasi uji coba pada himpunan data kecil tetapi representatif. Gunakan uji coba untuk menangkap throughput, latensi, dan konsumsi sumber daya yang realistis. Sampel perwakilan memberikan perkiraan yang lebih baik daripada data pengujian sintetis.

  • Ekstrapolasi hasil uji coba untuk memperkirakan Tingkat Komputasi, Tingkat Penyimpanan, dan jumlah pecahan. Gunakan metrik uji coba yang diamati untuk memproyeksikan kebutuhan ukuran akhir berdasarkan volume himpunan data lengkap Anda. Kunjungi kembali perkiraan jika distribusi data produksi Anda berbeda dari sampel.

  • Gunakan jumlah, ukuran, dan struktur dokumen perwakilan dengan pengaturan yang mirip dengan produksi. Cocokkan pengaturan pengindeksan dan sharding produksi selama uji coba untuk menghindari meremehkan biaya atau durasi migrasi. Pengaturan nonproduksi dapat menghasilkan hasil yang menyesatkan.

  • Perkirakan penyimpanan target dari hasil uji coba, bukan dengan mengasumsikan bahwa ukuran sumber dan target sama. Jejak penyimpanan sumber dan tujuan dapat berbeda karena perbedaan definisi indeks dan tata letak data. Gunakan hasil uji coba untuk merencanakan penyimpanan dengan buffer yang aman.

Optimalkan kecepatan migrasi

  • Migrasikan dalam wilayah yang sama jika memungkinkan. Menyimpan sumber dan target di wilayah yang sama mengurangi latensi jaringan dan meningkatkan performa transfer data. Ini juga dapat mengurangi biaya transfer data lintas wilayah.

  • Tingkatkan skala selama migrasi, lalu turunkan skala setelah peralihan. Misalnya, Anda dapat meningkatkan skala kluster target ke M200 untuk sementara guna meningkatkan throughput migrasi. Setelah migrasi, mengurangi skala ke tingkat yang sesuai dalam rentang yang didukung untuk beban kerja yang stabil.

  • Pilih disk dengan IOPS yang lebih tinggi untuk penulisan yang lebih cepat. IOPS yang lebih tinggi dapat secara signifikan meningkatkan performa migrasi dengan beban tulis yang tinggi. Karena ukuran disk biasanya tidak dapat diturunkan skalanya nanti, pilih ukuran disk dengan hati-hati selama perencanaan.

Rencanakan cutover dengan hati-hati karena tidak ada opsi pemulihan

  • Rencanakan waktu henti selama periode lalu lintas rendah. Waktu henti yang diperlukan tergantung pada berapa lama langkah validasi Anda berlangsung setelah migrasi selesai atau mencapai titik tertentu. Jendela lalu lintas rendah mengurangi dampak bisnis.

  • Hentikan semua penulisan ke sumber tepat sebelum cutover. Langkah ini mencegah divergensi menit terakhir antara sumber dan target. Konfirmasi aktivitas tulis sepenuhnya dijeda sebelum Anda menyelesaikan cutover.

  • Validasi data yang dimigrasikan sebelum memindahkan tulisan. Bandingkan jumlah dokumen, lalu jalankan perbandingan dokumen sampel acak (misalnya, pemeriksaan berbasis hash). Gunakan skrip jika memungkinkan untuk membuat validasi dapat diulang.

  • Perbarui string koneksi aplikasi dan uji pada target. Jalankan validasi fungsional dan performa terhadap pembacaan target dan uji lalu lintas sebelum mengaktifkan penulisan produksi. Pastikan jalur kritis bertindak seperti yang diharapkan.

  • Pindahkan lalu lintas penulisan hanya setelah validasi selesai dengan sukses. Alihkan penulisan produksi ke target hanya setelah hasil pengujian berhasil dan konsisten. Gunakan peluncuran bertahap jika arsitektur aplikasi Anda mendukungnya.

Berkoordinasi di seluruh tim untuk migrasi yang lancar

  • Dapatkan dukungan dari semua pemangku kepentingan: tim aplikasi, data, infrastruktur, keamanan, jaringan, dan manajemen. Menyelaraskan ekspektasi dan tanggung jawab lebih awal. Kepemilikan bersama mengurangi kesalahpahaman dan penundaan selama eksekusi.

  • Gunakan perencanaan dan uji coba untuk membangun kepercayaan diri tim dan menyempurnakan prosedur. Tidak ada pintasan untuk migrasi yang lancar. Uji coba menjalankan masalah permukaan di lingkungan berisiko lebih rendah dan memberi tim latihan.

  • Perlakukan cutover sebagai kritis dan sensitif terhadap waktu. Cutover membutuhkan koordinasi yang tepat dan komunikasi yang jelas. Menunjuk pembuat keputusan dan menetapkan jalur eskalasi sebelum dimulai.

  • Ketahui siapa yang akan melakukan setiap langkah, kapan itu harus terjadi, dan cara meminimalkan waktu henti. Tetapkan tanggung jawab, tetapkan garis waktu, dan selaras dengan kriteria keberhasilan. Dokumentasikan runbook langsung dan bagikan dengan semua peserta.

  • Berkoordinasi dengan semua pemangku kepentingan ketika transisi memerlukan pembaruan untuk beberapa beban kerja pada saat yang bersamaan. Jadwalkan cutover selama jendela pemeliharaan yang berfungsi untuk semua tim. Hindari Jumat malam atau periode di dekat acara bisnis besar.

  • Jangan terburu-buru atau lewati langkah-langkah uji tuntas—tidak ada pembatalan. Validasi menyeluruh dan eksekusi yang cermat mencegah kesalahan yang mahal. Pahami bahwa cutover membutuhkan waktu; pintasan yang mengutamakan kecepatan menciptakan risiko.