MongoDump dan MongoRestore vs MongoExport dan MongoImport

Jan 25 2023
MongoDB adalah program basis data berorientasi dokumen lintas platform yang tersedia sumber. Diklasifikasikan sebagai program database NoSQL, MongoDB menggunakan dokumen mirip JSON dengan skema opsional.

MongoDB adalah program basis data berorientasi dokumen lintas platform yang tersedia sumber. Diklasifikasikan sebagai program database NoSQL, MongoDB menggunakan dokumen mirip JSON dengan skema opsional.

Di blog ini, saya akan berbicara tentang penggunaan ' mongodump and mongorestore' vs 'mongoexport and mongoimport' . Blog mempertimbangkan fakta bahwa pembaca blog ini berasal dari latar belakang MongoDB dan istilah yang digunakan hanya terkait erat dengan MongoDB.

Ketika kita bekerja dengan sebuah organisasi atau bekerja pada basis kode yang besar dengan jumlah data yang besar dan kuat dalam database, ada beberapa contoh di mana kita perlu sering menggunakan perintah ini, dan ada banyak pemikiran dan pemeriksaan kewarasan sebelum menggunakan perintah ini sebagai mereka memanipulasi data dan manipulasi data besar adalah tugas yang harus ditangani dengan hati-hati, karena dapat menyebabkan downtime database atau redundansi data yang pada gilirannya dapat menyebabkan kerugian besar baik dalam hal teknologi (yaitu menstabilkan kembali database lagi) atau dapat menyebabkan hilangnya kepercayaan pengguna.

Mari kita bicara tentang mengapa kita membutuhkan utilitas ini. Dari namanya, kita dapat menyimpulkan bahwa mongodump dan mongoexport harus digunakan untuk mengekspor data dari database, dan mongorestore dan mongoimport harus mengimpor data ke database, tetapi bagian yang penting adalah mengapa banyak utilitas untuk tugas serupa. Itulah yang akan kita pahami.

mongodump

mongodump adalah utilitas baris perintah untuk membuat ekspor biner dari konten database. mongodump dapat mengekspor data dari instance mongod atau mongos ; yaitu dapat mengekspor data dari penyebaran mandiri, kumpulan replika, dan klaster pecahan. Contoh perintah untuk menggunakan mongodump adalah:

$ mongodump --uri=<MONGO_URL> --db=<DB_NAME> --collection=<COLL_NAME>

Ini adalah perintah yang harus dijalankan untuk mengeluarkan dump menggunakan mongodump. Secara default, folder dump akan dibuat dan database dump akan dibuat di dalam folder yang sama. Kita harus meneruskan parameter MONGO_URL dalam --uriparameter atau dapat kita gunakan --user=myuser and --password=somepassuntuk membiarkan utilitas terhubung ke klien MongoDB. Kita dapat menentukan database dan koleksi untuk mengambil dump menggunakan --db and --collectionparameter, dan bahkan kita dapat menggunakan --outparameter untuk mengubah nama direktori dump. Setiap kali kami mengambil dump, untuk setiap koleksi, itu menghasilkan dua file, satu file .bsondan satu lagi .metadata.jsonfile. Untuk lebih mendalam tentang mongodump, dokumentasi dapat dirujuk. Cadangan basis data juga dapat dijalankan menjadi file arsip menggunakan bidang --archive.

Alasan kami menggunakan mongodump adalah karena ia membuat salinan biner dan lebih efisien ( dengan efisien itu berarti lebih cepat daripada mongoexport dan membuat dump data yang lebih terkompresi ). Alasan lain adalah karena mongodump membuat .bson dump, sehingga ia mempertahankan Jenis Data Kaya BSON. Itu juga mempertahankan indeks dan statistik lainnya dalam .metadata.jsonfile, jadi setelah kami memulihkan data, indeks akan dibuat secara implisit. Oleh karena itu, secara umum, ini digunakan (dan direkomendasikan oleh MongoDB untuk digunakan) untuk pencadangan data terjadwal melalui cron atau yang lainnya.

Catatan: Kita tidak dapat menggunakan --archiveflag dan --outflag secara bersamaan dalam perintah mongodump yang sama.

mongorestore

mongorestore adalah pelengkap mongodump, dan digunakan untuk mengimpor data yang dibuang melalui mongodump atau mongoexport. mongorestore adalah operasi insert-only , yang artinya tidak akan menimpa dokumen di database yang sudah ada.

Mongorestore memungkinkan kami melakukan beberapa opsi pemulihan sebagian dengan menentukan koleksi, atau daftar koleksi, yang ingin kami pulihkan ke database Anda. Jika kita hanya perlu memulihkan satu koleksi, kita dapat menggunakan --collectionflag di mana kita perlu menentukan --dbflag dengan database tempat kita memulihkan serta jalur ke BSONfile koleksi. Disarankan untuk menggunakan --nsIncludeflag daripada flag koleksi.

Jika kita ingin menguji apakah a mongorestoreakan berfungsi sebelum mengimpor database, kita dapat menggunakan untuk --dryRunmenguji apakah pemulihan akan berfungsi seperti yang diharapkan. Dengan --dryRunbendera tersebut, mongorestore akan mengembalikan informasi ringkasan mongorestore tanpa mengimpor data apa pun.

$ mongorestore --db=mydb --nsInclude="staging.*" dump/

mongoexport

mongoexport bekerja dengan cara yang sama seperti mongodump, tetapi kurang efisien ruang dan menghasilkan dump data dalam format yang dapat dibaca manusia yaitu format JSON , dan karenanya lebih memakan waktu juga. Secara default, mongoexport menulis ke stdout, tetapi kita juga dapat menulis data ke file menggunakan parameter --out. Tapi seperti yang kita bahas di mongodump, dump mongoexport tidak dikompresi, dan tidak menghasilkan .metadata.jsonsehingga tidak dapat mempertahankan indeks, dan secara default, ia juga tidak dapat mempertahankan tipe data BSON yang kaya. Meskipun dalam versi mongo yang lebih baru, mongoexport memiliki dukungan untuk mempertahankan tipe BSON yang kaya dengan menggunakan --jsonFormat=canonicalparameter.

Manfaat dari mongoexport adalah kita juga dapat mengekspor bidang tertentu, menggunakan --fields=field1,field2...parameter dan menentukan semua nilai sebagai dipisahkan koma. Kami juga dapat menggunakan --skip, --limitdan --sortdi mongoexport untuk mendapatkan hasil yang disaring dan dibatasi. Ada banyak field juga yang bisa kita gunakan saat kita menggunakan mongoexport. Kami juga dapat menggunakan --queryparameter untuk mendapatkan lebih banyak hasil/pembuangan yang difilter. Saat kami mengambil dump menggunakan mongoexport, menjadi mudah untuk menambahkannya di Aplikasi Database UI seperti MongoDB Compass .

mongoimport

mongoimport adalah pelengkap dari mongoexport dan digunakan untuk memulihkan ekspor JSON, CSV, atau TSV yang diperluas yang dibuat oleh mongoexport, atau berpotensi, alat ekspor pihak ketiga lainnya. Perbedaan besar antara mongorestore dan utilitas mongoimport adalah --modeflag yang memiliki opsi insert, upsert, dan merge. Dari namanya saja kita dapat memahami bahwa dalam kasus mode penyisipan , kita hanya dapat memasukkan dokumen _id yang unik dan akan mencatat kesalahan jika terjadi duplikasi. Dalam kasus upsert , jika sudah ada dokumen dengan _ id yang sama, dokumen baru akan menggantikan dokumen sebelumnya dengan id _ yang sama. Kasus ketiga adalah penggabungan, di mana dokumen yang sudah ada yang cocok dengan dokumen di file impor digabungkan dengan dokumen baru.

Kesimpulan: Utilitas mongodump/ mongorestore sempurna untuk strategi pencadangan dan pemulihan basis data mongo . Utilitas ini memungkinkan kami membuang dan memulihkan dari satu file arsip yang dapat dengan mudah dikompresi dan disimpan atau ditransfer melalui email. Mongorestore memungkinkan kita untuk menyertakan atau mengecualikan koleksi tertentu agar tidak diimpor dan /atau dikembalikan ke database baru dengandan. Utilitas mongoexport / mongoimport sangat bagus untuk bekerja dengan koleksi di dalam database mongo dan memasukkan/memperbarui dokumen di dalam koleksi tersebut. Kita bisa menggunakanflag di mongoimport--nsInclude--nsExclude--modeuntuk menentukan apakah kita ingin menyisipkan, mengganti, atau menggabungkan dokumen dari file yang kita impor.

Terima kasih telah membaca, dan Anda dapat menghubungi saya di LinkedIn dan GitHub .