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

Cadangkan Basis Data MongoDB menggunakan mongodump

Ada beberapa cara untuk membuat cadangan database di MongoDB. Salah satu cara cepat untuk membuat cadangan database adalah dengan menggunakan mongodump alat.

mongodump membaca data dari database MongoDB dan membuat file BSON fidelitas tinggi yang mongorestore utitlity dapat digunakan untuk memulihkan database MongoDB.

Dengan mongodump , Anda dapat mencadangkan koleksi, database, atau semua database.

Periksa Alat Basis Data MongoDB

mongodump adalah bagian dari paket Alat Database MongoDB. Alat Database MongoDB adalah rangkaian utilitas baris perintah untuk bekerja dengan MongoDB.

Anda mungkin atau mungkin tidak memiliki MongoDB Database Tools/mongodump diinstal. Coba jalankan perintah berikut di Terminal atau Command Prompt Anda untuk memeriksa:

mongodump --version

Jika Anda tidak memilikinya, Anda dapat menggunakan petunjuk penginstalan di situs web MongoDB untuk menginstalnya ke sistem Anda.

Di mana Menjalankan Perintah?

Anda perlu menjalankan mongodump perintah dari baris perintah sistem Anda (mis. Terminal baru atau jendela Prompt Perintah).

Jangan jalankan dari mongo kerang.

Cadangkan Semua Basis Data

Untuk mencadangkan semua database dan koleksi di instans lokal yang berjalan pada port default 27017, gunakan mongodump perintah tanpa argumen.

mongodump

Menjalankan kode di atas membuang semua database ke folder bernama dump/ .

Perhatikan bahwa ini mengecualikan local dan config database.

Perhatikan juga bahwa mongodump hanya menangkap dokumen dalam database. Saat Anda melakukan pemulihan, mongorestore atau mongod harus membangun kembali indeks setelah memulihkan data.

Berikut tampilan file di dump/ folder.

tree dump

Hasil:

dump
├── PetHotel
│   ├── employees.bson
│   ├── employees.metadata.json
│   ├── owners.bson
│   ├── owners.metadata.json
│   ├── pets.bson
│   ├── pets.metadata.json
│   ├── pettypes.metadata.json
│   ├── players.bson
│   ├── players.metadata.json
│   ├── scores.bson
│   ├── scores.metadata.json
│   ├── students.bson
│   └── students.metadata.json
├── admin
│   ├── system.users.bson
│   ├── system.users.metadata.json
│   ├── system.version.bson
│   └── system.version.metadata.json
└── krankykranes
    ├── employees.bson
    ├── employees.metadata.json
    ├── products.bson
    └── products.metadata.json

File-file itu jelas khusus untuk instalasi MongoDB saya, yang berisi database pengujian. Dalam kasus saya, 3 database dibuang:PetHotel , admin , dan krankykranes .

Mencadangkan ke Lokasi Tertentu

Anda dapat menggunakan --out atau -o untuk menentukan lokasi untuk meletakkan file untuk database yang dibuang.

Contoh:

mongodump --out=data/backups/

Atau:

mongodump -o=data/backups/

Dalam hal ini, setiap folder database adalah output langsung ke data/backups/ folder (yaitu tidak ada /dump/ folder).

Mencadangkan Basis Data Tertentu

Anda dapat menggunakan --db parameter untuk menentukan database yang akan dicadangkan.

mongodump --db=krankykranes

Ini membuang krankykranes database ke default dump/ folder.

Mencadangkan Koleksi Tertentu

Anda dapat menggunakan --collection atau -c untuk menentukan koleksi yang akan dicadangkan.

Contoh:

mongodump --db=krankykranes --collection=products

Atau:

mongodump --db=krankykranes -c=products

Ini membuang products koleksi ke dump/krankykranes folder.

Tidak termasuk Koleksi

Anda juga dapat menggunakan --excludeCollection parameter untuk menentukan koleksi tertentu yang akan dikecualikan dari cadangan (yaitu tidak disertakan dalam cadangan).

Contoh:

mongodump --db=PetHotel --excludeCollection=employees

Ini membuang semua koleksi dari PetHotel database kecuali untuk employees koleksi.

Untuk mengecualikan lebih dari satu koleksi, gunakan --excludeCollection yang terpisah parameter untuk setiap koleksi yang ingin Anda kecualikan.

Contoh:

mongodump --db=PetHotel --excludeCollection=employees --excludeCollection=students

Itu tidak termasuk employees dan students koleksi dari cadangan.

Anda juga dapat menggunakan --excludeCollectionsWithPrefix parameter untuk mengecualikan koleksi dengan awalan yang diberikan.

mongodump --db=PetHotel --excludeCollectionsWithPrefix=p

Itu membuang semua koleksi kecuali yang dimulai dengan huruf p .

Yang berikut mengecualikan semua koleksi yang dimulai dengan pet .

mongodump --db=PetHotel --excludeCollectionsWithPrefix=pet

Anda dapat menggunakan beberapa --excludeCollectionsWithPrefix argumen untuk mengecualikan koleksi dengan banyak awalan.

Contoh:

mongodump --db=PetHotel --excludeCollectionsWithPrefix=p  --excludeCollectionsWithPrefix=s

Kompres Outputnya

Anda dapat menggunakan --gzip parameter untuk mengompresi output.

mongodump --gzip --db=krankykranes

Ini mengompresi file individual.

tree dump

Hasil:

dump
└── krankykranes
    ├── employees.bson.gz
    ├── employees.metadata.json.gz
    ├── products.bson.gz
    └── products.metadata.json.gz

Kita dapat melihat bahwa semua file memiliki .gz ekstensi.

Saat mengeluarkan ke file arsip atau aliran keluar standar, --gzip opsi kompres file arsip atau output data ke aliran.

Mengonversi Tampilan menjadi Koleksi

Anda dapat menggunakan --viewsAsCollections parameter untuk mengekspor tampilan hanya-baca sebagai koleksi.

mongodump --db=PetHotel --viewsAsCollections

Saat Anda mengekspor tampilan sebagai koleksi, mongodump menghasilkan file BSON yang berisi dokumen dalam tampilan. Jika Anda menggunakan mongorestore untuk mengembalikan file BSON yang dihasilkan, tampilan akan dikembalikan sebagai koleksi.

Tanpa menggunakan argumen ini, mongodump mengekspor metadata setiap tampilan. Jika Anda menyertakan file metadata tampilan di mongorestore operasi, tampilan dibuat ulang.

Menggunakan --viewsAsCollections juga menghilangkan semua koleksi standar. Oleh karena itu, ketika saya menjalankan kode di atas, dump/ saya struktur folder terlihat seperti ini:

tree dump

Hasil:

dump
└── PetHotel
    ├── pettypes.bson
    └── pettypes.metadata.json

Di PetHotel saya database, saya memiliki tampilan yang disebut pettypes . Saat saya mengekspor ini sebagai tampilan, hanya metadata yang diekspor. Tetapi ketika saya mengubahnya menjadi koleksi, pettypes.bson file dibuat yang tidak akan ada jika saya telah mengekspor tampilan sebagai tampilan.

Inilah yang terjadi jika saya mengekspor tampilan tersebut tanpa mengonversinya menjadi koleksi.

mongodump --db=PetHotel --collection=pettypes

Kemudian jalankan perintah pohon, untuk mendapatkan struktur folder.

tree dump

Hasil:

dump
└── PetHotel
    └── pettypes.metadata.json

Jadi kita bisa melihat bahwa hanya metadata untuk tampilan yang dibuang.

Mode Diam

Anda dapat menggunakan --quiet parameter untuk membatasi output di jendela Terminal atau Command Prompt Anda.

mongodump --quiet

Tanpa menggunakan ini, Anda mungkin akan melihat daftar besar tampilan, koleksi, dll yang dicadangkan.

Mode Verbose

Di sisi lain, Anda dapat menggunakan --verbose atau -v parameter untuk meningkatkan output di jendela Terminal atau Command Prompt Anda.

mongodump --verbose

Anda dapat meningkatkan verbositas dengan mengulangi -v bentuk beberapa kali.

Contoh:

mongodump -vvvv

Menjalankannya di sistem saya meningkatkan verbositas secara signifikan.

Hasil Kueri Cadangan

Anda dapat menggunakan --query atau -q parameter untuk membuang hasil kueri.

Contoh:

mongodump --db=PetHotel --collection=pets --query='{ "type": "Dog" }'

Saat melakukan ini, kelilingi kueri dengan tanda kutip tunggal. Anda dapat menggunakan tanda kutip ganda untuk kolom.

Arsip &Keluaran Standar

Anda dapat menggunakan --archive atau parameter untuk menulis output ke file arsip tertentu atau, jika file arsip tidak ditentukan, ke output standar (stdout ) streaming sehingga Anda dapat menyalurkan ke proses lain.

Contoh keluaran ke file arsip:

mongodump --archive=PetHotel.20201230.archive --db=PetHotel

Pada contoh berikutnya, saya menulis ke aliran keluaran standar, lalu menyalurkan ke mongorestore :

mongodump --archive --db=PetHotel --collection=pets --query='{ "type": "Dog" }' | mongorestore --archive  --nsFrom='PetHotel.pets' --nsTo='PetHotel.dogs'

Itu menghasilkan koleksi baru yang disebut dogs muncul di PetHotel database (dan koleksi hanya berisi dokumen yang memiliki type bidang dengan nilai dogs ).

Kontrol Akses

Contoh sebelumnya dilakukan pada mesin lokal menggunakan port default. Ini berarti bahwa kami dapat menjalankan mongodump tanpa menentukan hal-hal seperti --host , --port , --username , dll.

Berikut adalah contoh yang menggunakan parameter tersebut untuk mengautentikasi sebagai homer :

mongodump --host=myhost.example.com --port=37017 --username=homer --authenticationDatabase=admin --out=/backups/mongodump-2020-12-30

Kita juga bisa menggunakan --password parameter, tetapi kami tidak melakukannya. Jika Anda melewati --user tapi bukan --password , Anda akan dimintai sandi.

Informasi Lebih Lanjut tentang mongodump

mongodump utilitas menerima banyak parameter berguna lainnya, dan ada juga berbagai faktor yang perlu dipertimbangkan saat menggunakannya sebagai bagian dari strategi pencadangan dan pemulihan.

Lihat mongodump dokumentasi di situs web MongoDB untuk info lebih lanjut.

Opsi Lain

mongodump dan mongorestore adalah alat yang sederhana dan efisien untuk mencadangkan dan memulihkan penerapan MongoDB kecil, tetapi tidak ideal untuk merekam cadangan sistem yang lebih besar.

Lihat Metode Pencadangan MongoDB di situs web MongoDB untuk metode lain untuk mencadangkan database MongoDB Anda.


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Mongoose TypeError:Pengguna bukan konstruktor

  2. Bagaimana cara memperbarui jika ada jika tidak, masukkan dokumen baru?

  3. MongoDB:ERROR:proses anak gagal, keluar dengan nomor kesalahan 14

  4. Bagaimana menemukan persimpangan set set antara dokumen dalam satu koleksi di MongoDB?

  5. Grup dan sortir Mongodb