MongoDB
 sql >> Teknologi Basis Data >  >> NoSQL >> MongoDB

Tinjauan Opsi Pencadangan MongoDB

Pencadangan basis data tidak lain adalah cara untuk melindungi atau memulihkan data. Ini adalah proses menyimpan status operasional, arsitektur, dan data database Anda. Ini bisa sangat berguna dalam situasi pemadaman teknis atau bencana. Jadi, penting untuk menyimpan cadangan basis data Anda dan basis data Anda memiliki proses pencadangan yang baik dan mudah.

MongoDB menyediakan beberapa alat/teknik untuk membuat cadangan database Anda dengan mudah.

Dalam artikel ini, kita akan membahas beberapa alur kerja pencadangan dan pemulihan MongoDB teratas.

Secara umum, ada tiga opsi paling umum untuk mencadangkan server/cluster MongoDB Anda.

  • Mongodump/Mongorestore
  • Pengelola Cloud MongoDB
  • Cuplikan Basis Data

Terlepas dari opsi umum ini, ada cara lain untuk mencadangkan MongoDB Anda. Kami akan membahas semua opsi ini juga di artikel ini. Mari kita mulai.

MongoDump/MongoRestore

Jika Anda memiliki database kecil (<100GB) dan Anda ingin memiliki kontrol penuh atas cadangan Anda, maka Mongodump dan Mongorestore adalah pilihan terbaik Anda. Ini adalah perintah mongo shell yang dapat digunakan untuk membuat cadangan database atau koleksi Anda secara manual. Mongodump membuang semua data dalam format Binary JSON(BSON) ke lokasi yang ditentukan. Mongorestore dapat menggunakan file BSON ini untuk memulihkan database Anda.

Cadangkan Seluruh Basis Data

$ sudo mongodump --db mydb --out /var/backups/mongo

Keluaran:

2018-08-20T10:11:57.685-0500    writing mydb.users to /var/backups/mongo/mydb/users.bson
2018-08-20T10:11:57.907-0500    writing mydb.users metadata to /var/backups/mongo/mydb/users.metadata.json
2018-08-20T10:11:57.911-0500    done dumping mydb.users (25000 documents)
2018-08-20T10:11:57.911-0500    writing mydb.system.indexes to /var/backups/mongo/mydb/system.indexes.bson

Dalam perintah ini, argumen yang paling penting adalah --db. Ini menentukan nama database yang ingin Anda backup. Jika Anda tidak menentukan argumen ini, maka perintah Mongodump akan mencadangkan semua database Anda yang dapat menjadi proses yang sangat intensif.

Cadangkan Satu Koleksi

$ mongodump -d mydb -o /var/backups/mongo --collection users

Perintah ini hanya akan mencadangkan koleksi pengguna di database mydb. Jika Anda tidak memberikan opsi ini, itu akan mencadangkan semua koleksi di database secara default.

Mengambil Backup Reguler Menggunakan Mongodump/Mongorestore

Sebagai praktik standar, Anda harus membuat cadangan reguler dari database MongoDB Anda. Misalkan Anda ingin melakukan backup setiap hari pada jam 03.03, maka di sistem Linux Anda dapat melakukannya dengan menambahkan entri cron di crontab.

$ sudo crontab -e

Tambahkan baris ini di crontab:

3 3 * * * mongodump --out /var/backups/mongo

Memulihkan Seluruh Basis Data

Untuk memulihkan database, kita dapat menggunakan perintah Mongorestore dengan opsi --db. Ini akan membaca file BSON yang dibuat oleh Mongodump dan memulihkan database Anda.

$ sudo mongorestore --db mydb /var/backups/mongo/mydb

Keluaran

2018-07-20T12:44:30.876-0500    building a list of collections to restore from /var/backups/mongo/mydb/ dir
2018-07-20T12:44:30.908-0500    reading metadata file from /var/backups/mongo/mydb/users.metadata.json
2018-07-20T12:44:30.909-0500    restoring mydb.users from file /var/backups/mongo/mydb/users.bson
2018-07-20T12:45:01.591-0500    restoring indexes for collection mydb.users from metadata
2018-07-20T12:45:01.592-0500    finished restoring mydb.users (25000 documents)
2018-07-20T12:45:01.592-0500    done

Pulihkan seluruh koleksi

Untuk mengembalikan hanya satu koleksi dari db, Anda dapat menggunakan perintah berikut:

$ mongorestore -d mydb -c users mydb/users.bson

Jika koleksi Anda dicadangkan dalam format JSON, bukan BSON, Anda dapat menggunakan perintah berikut:

$ mongoimport --db mydb --collection users --file users.json --jsonArray

Keuntungan

  • Sangat mudah digunakan
  • Anda memiliki akses penuh ke cadangan Anda
  • Anda dapat meletakkan cadangan di lokasi mana pun seperti berbagi NFS, AWS S3, dll.

Kekurangan

  • Setiap kali akan mengambil cadangan penuh dari database, bukan hanya perbedaannya.
  • Untuk database besar, diperlukan waktu berjam-jam untuk mencadangkan dan memulihkan database.
  • Ini bukan point-in-time secara default, yang berarti bahwa jika data Anda berubah saat mencadangkannya, maka pencadangan Anda dapat mengakibatkan inkonsistensi. Anda dapat menggunakan opsi --oplog untuk mengatasi masalah ini. Ini akan mengambil snapshot dari database pada akhir proses mongodump.

Manajer Operasi MongoDB

Ops Manager adalah aplikasi manajemen untuk MongoDB yang berjalan di pusat data Anda. Ini terus-menerus mencadangkan data Anda dan menyediakan proses pemulihan tepat waktu untuk database Anda. Di dalam aplikasi ini, ada agen yang terhubung ke instans MongoDB Anda. Ini pertama-tama akan melakukan sinkronisasi awal untuk mencadangkan status database saat ini. Agen akan terus mengirimkan data oplog terkompresi dan terenkripsi ke Manajer Operasi sehingga Anda dapat memiliki pencadangan berkelanjutan. Dengan menggunakan data ini, Manajer Operasi akan membuat snapshot database. Ini akan membuat snapshot dari database Anda setiap 6 jam dan data oplog akan disimpan selama 24 jam. Anda dapat mengonfigurasi jadwal snapshot kapan saja menggunakan Manajer Operasi.

Keuntungan

  • Ini adalah point-in-time secara default
  • Tidak memengaruhi kinerja produksi kecuali untuk sinkronisasi awal
  • Dukungan untuk snapshot yang konsisten dari cluster yang di-sharding
  • Fleksibilitas untuk mengecualikan koleksi yang tidak penting

Kekurangan

  • Latensi jaringan meningkat seiring dengan ukuran snapshot saat memulihkan database.

Pengelola Cloud MongoDB

MongoDB Cloud Manager adalah solusi pencadangan berbasis cloud yang menyediakan pemulihan tepat waktu, solusi pencadangan berkelanjutan dan online sebagai layanan yang terkelola sepenuhnya. Anda cukup menginstal agen Cloud Manager untuk mengelola pencadangan dan pemulihan database Anda. Ini akan menyimpan data cadangan Anda di awan MongoDB.

Keuntungan

  • Sangat mudah digunakan. GUI yang bagus.
  • Pencadangan kueri dan oplog berkelanjutan.

Kekurangan

  • Tidak ada kontrol pada data cadangan. Itu disimpan di awan MongoDB.
  • Biaya tergantung pada ukuran data dan jumlah perubahan oplog.
  • Proses pemulihan lambat.

File Basis Data Snapshot

Ini adalah solusi paling sederhana untuk membuat cadangan database Anda. Anda dapat menyalin semua file yang mendasarinya (konten data/ direktori) dan meletakkannya di lokasi yang aman. Sebelum menyalin semua file, Anda harus menghentikan semua operasi tulis yang sedang berlangsung ke database untuk memastikan konsistensi data. Anda dapat menggunakan perintah db.fsyncLock() untuk menghentikan semua operasi penulisan.

Ada dua jenis snapshot:satu adalah snapshot tingkat cloud dan yang lainnya adalah snapshot tingkat OS.

Jika Anda menyimpan data database dengan penyedia layanan cloud seperti AWS, maka Anda harus mengambil snapshot AWS EBS untuk cadangan. Sebaliknya, jika Anda menyimpan file DB di OS asli seperti Linux maka Anda harus mengambil snapshot LVM. Snapshot LVM tidak portabel ke mesin lain. Jadi snapshot berbasis cloud lebih baik daripada snapshot berbasis OS.

Keuntungan

  • Mudah digunakan.
  • Kontrol penuh atas snapshot. Anda dapat memindahkannya ke pusat data mana pun.
  • Snapshot ini adalah snapshot berbeda yang hanya menyimpan perbedaan dari snapshot sebelumnya.
  • Tidak perlu mengunduh snapshot untuk memulihkan database Anda. Anda cukup membuat volume baru dari cuplikan Anda.

Kekurangan

  • Dengan menggunakan metode ini, Anda hanya dapat memulihkan database pada titik putus.
  • Perawatan terkadang menjadi sangat rumit.
  • Untuk mengoordinasikan pencadangan di semua set replika (dalam sistem yang di-shard), Anda memerlukan tim pengembang khusus.

Alat Pencadangan Konsisten MongoDB

Pencadangan konsisten MongoDB adalah alat untuk melakukan pencadangan klaster MongoDB secara konsisten. Itu dapat membuat cadangan cluster dengan satu atau banyak pecahan ke satu titik database. Ini menggunakan Mongodump sebagai metode pencadangan default. Jalankan perintah berikut untuk mengambil cadangan menggunakan alat ini.

$ mongodb-consistent-backup -H localhost -P 27017 -u USERNAME -p PASSWORD -l /var/backups/mongo

Semua cadangan yang dihasilkan oleh perintah ini kompatibel dengan MongoRestore. Anda dapat menggunakan perintah mongorestore dengan opsi --oplogReplay untuk memastikan konsistensi.

$ mongorestore --host localhost --port 27017 -u USERNAME -p PASSWORD --oplogReplay --dir /var/backups/mongo/mydb/dump

Keuntungan

  • Sumber terbuka sepenuhnya
  • Bekerja dengan sharded cluster
  • Menyediakan opsi untuk pencadangan jarak jauh seperti Amazon S3
  • Penskalaan otomatis tersedia
  • Sangat mudah untuk menginstal dan menjalankan

Kerugian

  • Produk tidak sepenuhnya matang
  • Sangat sedikit opsi pengunggahan jarak jauh
  • Tidak mendukung enkripsi data sebelum disimpan ke disk
  • Repositori kode resmi tidak memiliki pengujian yang tepat

Cadangan ClusterControl

ClusterControl adalah semua dalam satu sistem manajemen database otomatis. Ini memungkinkan Anda memantau, menyebarkan, mengelola &menskalakan klaster database Anda dengan mudah. Mendukung MySQL, MongoDB, PostgreSQL, Percona XtraDB dan Galera Cluster. Perangkat lunak ini mengotomatiskan hampir semua operasi basis data seperti menyebarkan cluster, menambahkan atau menghapus node dari cluster mana pun, pencadangan berkelanjutan, penskalaan cluster, dll. Semua hal ini dapat Anda lakukan dari satu GUI yang disediakan oleh sistem ClusterControl.

ClusterControl menyediakan GUI yang sangat bagus untuk manajemen cadangan MongoDB dengan dukungan untuk penjadwalan dan laporan kreatif. Ini memberi Anda dua opsi untuk metode pencadangan.

  1. Mongodump
  2. Pencadangan konsisten Mongodb

Jadi pengguna dapat memilih opsi apa pun sesuai dengan kebutuhan mereka. Alat ini memberikan ID unik untuk semua cadangan dan menyimpannya di bawah jalur ini:ClusterControl> Settings> Backup> BackupID. Jika node yang ditentukan tidak hidup saat mengambil cadangan maka alat akan secara otomatis menemukan node hidup dari cluster dan melakukan proses backup pada node tersebut. Alat ini juga menyediakan opsi untuk menjadwalkan pencadangan menggunakan salah satu metode pencadangan di atas. Anda dapat mengaktifkan/menonaktifkan pekerjaan penjadwalan apa pun hanya dengan mengaktifkan tombol. ClusterControl menjalankan proses pencadangan di latar belakang sehingga tidak akan memengaruhi pekerjaan lain dalam antrean.

Keuntungan

  • Instalasi mudah dan sangat mudah digunakan
  • Beberapa opsi untuk metode pencadangan
  • Penjadwalan pencadangan sangat mudah menggunakan formulir GUI sederhana
  • Verifikasi pencadangan otomatis
  • Cadangkan laporan dengan status

Kerugian

  • Kedua metode pencadangan secara internal menggunakan mongodump, yang memiliki beberapa masalah dalam menangani database yang sangat besar.

Kesimpulan

Strategi pencadangan yang baik adalah bagian penting dari sistem manajemen basis data apa pun. MongoDB menawarkan banyak opsi untuk pencadangan dan pemulihan/pemulihan. Seiring dengan metode pencadangan yang baik, sangat penting untuk memiliki banyak replika database. Ini membantu untuk memulihkan database tanpa downtime bahkan satu detik. Terkadang untuk database yang lebih besar, proses pencadangan bisa sangat intensif sumber daya. Jadi server Anda harus dilengkapi dengan CPU yang baik, RAM, dan lebih banyak ruang disk untuk menangani beban semacam ini. Proses pencadangan dapat menambah beban di server karena alasan ini sehingga Anda harus menjalankan proses pencadangan pada malam hari atau di luar jam sibuk.


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Tidak dapat menemukan modul '../build/Release/bson'] kode:'MODULE_NOT_FOUND' } js-bson:Gagal memuat ekstensi c++ bson, menggunakan versi JS murni

  2. Cara menggunakan Spring untuk terhubung ke MongoDB yang memerlukan otentikasi

  3. Tutorial PyMongo:Menguji Failover MongoDB di Aplikasi Python Anda

  4. MongoDB $project:Pertahankan bidang pipa sebelumnya

  5. Bagaimana saya bisa menyimpan banyak dokumen secara bersamaan di Mongoose/Node.js?