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.