Alur kerja pencadangan dan pemulihan sangat penting untuk kluster MongoDB produksi apa pun. Terlepas dari fungsi pencadangan dan pemulihan yang sebenarnya, Anda juga harus mempertimbangkan non-fungsional lainnya seperti ketersediaan cadangan, keamanan, waktu pemulihan, perincian pemulihan, dll. Pada tingkat tinggi, Anda memiliki tiga opsi untuk mencadangkan server MongoDB Anda:
- Mongodump / Mongorestore
- Pengelola Cloud MongoDB
- Cuplikan Diska
Masing-masing dari ketiga teknik di atas memiliki kelebihan dan kekurangannya masing-masing. Baca di bawah untuk memahami lebih detail.
1. Mongodump / Mongorestore
Mongodump adalah alat pencadangan "memulai" untuk sebagian besar pengembang MongoDB. Ini mungkin cara sebagian besar pengembang mulai mencadangkan basis data MongoDB mereka. Alat Mongodump sangat mudah digunakan dan membuang semua data dalam database dalam format biner (BSON) yang dapat Anda simpan di lokasi pilihan Anda.
Pro:
- Mudah digunakan.
- Fleksibilitas tempat penyimpanan cadangan - setelah dump selesai, Anda dapat memindahkannya ke lokasi mana pun yang Anda pilih – berbagi NFS, AWS S3, dll.
Kekurangan:
- Cadangan penuh, setiap kali – Ini adalah cadangan lengkap, tidak berbeda dari cadangan Anda sebelumnya. Jadi, karena basis data Anda menjadi besar, diperlukan waktu berjam-jam untuk menyelesaikan pencadangan dan sulit untuk disimpan.
- Bukan Point-in-Time – Cadangan yang dibuat oleh mongodump bukanlah snapshot point-in-time secara default. Jadi, jika data Anda berubah selama pencadangan, Anda dapat berakhir dengan mongodump yang tidak konsisten dari perspektif aplikasi. Anda dapat memperbaikinya dengan menggunakan opsi “–oplog” yang mengambil snapshot di akhir proses mongodump. Namun, opsi ini tidak tersedia untuk database mandiri
2. Manajer Cloud MongoDB
Cloud Manager adalah layanan cloud yang disediakan oleh tim MongoDB untuk membantu Anda mencadangkan cluster MongoDB Anda.
Pro:
- Mudah digunakan – Instal agen MongoDB Cloud Manager untuk mengelola pencadangan/pemulihan cluster Anda. Ini sedikit lebih rumit daripada menggunakan mongodump, tetapi tidak terlalu banyak.
- Pencadangan berkelanjutan – Cloud Manager terus-menerus menanyakan dan mencadangkan oplog Anda. Jadi, ini memungkinkan Anda memulihkan ke titik waktu mana pun alih-alih waktu tertentu saat pencadangan dilakukan, yang meminimalkan risiko kehilangan data.
Kekurangan:
- Kontrol data – Data cadangan disimpan di pusat data MongoDB di luar kendali Anda. Di beberapa bagian dunia (Misalnya Eropa) dan tergantung pada kebutuhan keamanan Anda, ini bisa menjadi masalah besar.
- Biaya tambahan – Anda membayar berdasarkan ukuran data dan jumlah perubahan oplog. Jika Anda memiliki database yang besar atau jumlah penulisan yang tinggi, biaya ini dapat bertambah.
- Pemulihan lambat – Untuk memulihkan data Anda dari MongoDB Cloud Manager, data harus diunduh secara fisik dari pusat data Cloud Manager. Ini bisa menjadi operasi yang sangat memakan waktu jika Anda memiliki database yang besar, misalnya, jika data Anda 1 TB, diperlukan waktu beberapa jam untuk mengunduh dan menggunakan data.
3. Cuplikan disk
Snapshot dapat berada di level cloud (Misalnya snapshot disk AWS EBS) atau level OS (snapshot LVM). Snapshot LVM, meskipun nyaman, tidak mudah dibawa-bawa di luar mesin. Oleh karena itu, untuk sisa diskusi ini, kita akan fokus pada snapshot cloud disk seperti snapshot AWS EBS.
Pro:
- Sederhana dan mudah digunakan – Relatif sepele untuk memicu snapshot disk EBS.
- Portabilitas – Anda dapat memindahkan snapshot ke pusat data lain jika memerlukan ketersediaan yang lebih tinggi untuk cadangan Anda.
- Snapshot berbeda – Snapshot adalah snapshot yang berbeda, sehingga hanya menyimpan perubahan dari snapshot Anda sebelumnya. Ini mengurangi jumlah penyimpanan yang dibutuhkan oleh cadangan Anda.
- Tidak ada salinan data – Tidak ada salinan data yang terlibat untuk memulihkan data Anda. Misalnya. Jika Anda ingin memulihkan snapshot 1TB, Anda cukup membuat volume baru dari snapshot dan ini tidak menghasilkan salinan data yang sebenarnya. Ini adalah * masalah besar * ketika menangani data dalam jumlah besar.
- Kontrol pencadangan – Cadangan tetap berada di pusat data yang sama dengan data utama Anda dan diamankan dengan mekanisme autentikasi yang sama dengan server data utama Anda.
Kekurangan:
- Bukan pencadangan berkelanjutan – Ini adalah pencadangan titik waktu dan hanya dapat dipulihkan ke titik pencadangan.
- Mesin fisik - Mesin fisik lokal tidak dapat dicadangkan menggunakan teknik ini.
Pada akhirnya, jika data Anda kecil, ketiga opsi akan berfungsi dengan baik. Saat Anda mulai memiliki jumlah data yang lebih besar, Anda harus meluangkan waktu dan memilih opsi yang paling sesuai untuk skenario Anda.