Der er flere måder at sikkerhedskopiere en database på i MongoDB. En hurtig måde at sikkerhedskopiere en database på er at bruge mongodump
værktøj.
mongodump
læser data fra en MongoDB-database og opretter high fidelity BSON-filer som mongorestore
utility kan bruge til at gendanne en MongoDB-database.
Med mongodump
, kan du sikkerhedskopiere en samling, en database eller alle databaser.
Søg efter MongoDB-databaseværktøjer
mongodump
er en del af MongoDB Database Tools-pakken. MongoDB-databaseværktøjerne er en række kommandolinjeværktøjer til at arbejde med MongoDB.
Du har måske eller måske ikke MongoDB Database Tools/mongodump
installeret. Prøv at køre følgende kommando i din terminal eller kommandoprompt for at kontrollere:
mongodump --version
Hvis du ikke har det, kan du bruge installationsinstruktionerne på MongoDB-webstedet for at installere det på dit system.
Hvor skal kommandoerne køres?
Du skal køre mongodump
kommandoer fra dit systems kommandolinje (f.eks. et nyt terminal- eller kommandopromptvindue).
Kør dem ikke fra mongo
skal.
Sikkerhedskopier alle databaser
For at sikkerhedskopiere alle databaser og samlinger i den lokale instans, der kører på standardporten 27017, skal du bruge mongodump
kommando uden nogen argumenter.
mongodump
Kørsel af ovenstående kode dumper alle databaser til en mappe kaldet dump/
.
Bemærk, at den udelukker den lokale
og config
databaser.
Bemærk også, at mongodump
kun fanger dokumenterne i databasen. Når du laver en gendannelse, mongorestore
eller mongod
skal genopbygge indekserne efter gendannelse af data.
Sådan ser filerne ud i dump/
mappe.
trædump
Resultat:
dump├── PetHotel│ ├── ansatte.bson│ ├── ansatte.metadata.json│ ├── ejere.bson│ ├── ejere.metadata.json───søn│ ─ pets.metadata.json│ ├── pettypes.metadata.json│ ├── players.bson│ ├── players.metadata.json│ ├── scores.bson│s. ─ students.bson│ └── students.metadata.json├── admin│ ├── system.users.bson│ ├── system.users.metadata.json│ ├──system ├──system. system.version.metadata.json-Disse filer er tydeligvis specifikke for min MongoDB-installation, som indeholder testdatabaser. I mit tilfælde blev 3 databaser dumpet:
PetHotel
,admin
, ogkrankykranes
.Sikkerhedskopiér til en bestemt placering
Du kan bruge
--out
eller-o
for at angive en placering for at placere filerne til de dumpede databaser.Eksempel:
mongodump --out=data/backups/
Eller:
mongodump -o=data/backups/
I dette tilfælde udlæses hver databasemappe direkte i
data/backups/
mappe (dvs. der er ingen/dump/
mappe).Sikkerhedskopier en specifik database
Du kan bruge
--db
parameter for at angive en database, der skal sikkerhedskopieres.mongodump --db=krankykranes
Dette dumper
krankykranes
database til standarddump/
mappe.Sikkerhedskopiér en specifik samling
Du kan bruge
--collection
eller-c
for at angive en samling, der skal sikkerhedskopieres.Eksempel:
mongodump --db=krankykranes --collection=produkter
Eller:
mongodump --db=krankykranes -c=produkter
Dette dumper
produkterne
samling tildump/krankykranes
mappe.Ekskluderer samlinger
Du kan også bruge
--excludeCollection
parameter for at angive en specifik samling, der skal udelukkes fra sikkerhedskopien (dvs. ikke inkludere i sikkerhedskopien).Eksempel:
mongodump --db=PetHotel --excludeCollection=medarbejdere
Dette dumper alle samlinger fra
PetHotel
database undtagenmedarbejderne
samling.For at ekskludere mere end én samling, brug en separat
--excludeCollection
parameter for hver samling, du vil ekskludere.Eksempel:
mongodump --db=PetHotel --excludeCollection=medarbejdere --excludeCollection=studerende
Det ekskluderer
medarbejderne
ogelever
samlinger fra sikkerhedskopien.Du kan også bruge
--excludeCollectionsWithPrefix
parameter for at ekskludere samlinger med et givet præfiks.mongodump --db=PetHotel --excludeCollectionsWithPrefix=p
Det dumper alle samlinger undtagen dem, der starter med bogstavet
p
.Den følgende udelukker alle samlinger, der starter med
kæledyr
.mongodump --db=PetHotel --excludeCollectionsWithPrefix=kæledyr
Du kan bruge flere
--excludeCollectionsWithPrefix
argumenter for at ekskludere samlinger med flere præfikser.Eksempel:
mongodump --db=PetHotel --excludeCollectionsWithPrefix=p --excludeCollectionsWithPrefix=s
Komprimer outputtet
Du kan bruge
--gzip
parameter for at komprimere outputtet.mongodump --gzip --db=krankykranes
Dette komprimerer de enkelte filer.
trædump
Resultat:
dump└── krankykranes ├── employee.bson.gz ├── employee.metadata.json.gz ├── products.bson.gz └── products.metadata.json.gzcode >
Vi kan se, at alle filer har
.gz
udvidelse.Når du udskriver til en arkivfil eller standard ud-stream, er
--gzip
option komprimerer arkivfilen eller dataoutputtet til streamen.Konverter visninger til samlinger
Du kan bruge
--viewsAsCollections
parameter for at eksportere skrivebeskyttede visninger som samlinger.mongodump --db=PetHotel --viewsAsCollections
Når du eksporterer en visning som en samling,
mongodump
producerer en BSON-fil, der indeholder dokumenterne i visningen. Hvis du brugermongorestore
for at gendanne den producerede BSON-fil, vil visningen blive gendannet som en samling.Uden at bruge dette argument,
mongodump
eksporterer hver visnings metadata. Hvis du inkluderer en visnings metadatafil i enmongorestore
operation, genskabes visningen.Brug af
--viewsAsCollections
udelader også alle standardkollektioner. Derfor, når jeg kører ovenstående kode, vil mindump/
mappestrukturen ser sådan ud:trædump
Resultat:
dump└── PetHotel ├── pettypes.bson └── pettypes.metadata.json
I mit
PetHotel
database, jeg har en visning kaldetkæledyrstyper
. Når jeg eksporterer dette som en visning, eksporteres kun metadataene. Men når jeg konverterer den til en samling, enpettypes.bson
fil oprettes, som ikke ville være der, hvis jeg havde eksporteret visningen som en visning.Her er, hvad der sker, hvis jeg eksporterer den visning uden at konvertere den til en samling.
mongodump --db=PetHotel --collection=pettypes
Kør derefter trækommandoen for at få mappestrukturen.
trædump
Resultat:
dump└── PetHotel └── pettypes.metadata.jsonSå vi kan se, at kun metadataene for visningen er dumpet.
Støjsvag tilstand
Du kan bruge
--quiet
parameter for at begrænse output i dit terminal- eller kommandopromptvindue.mongodump --quiet
Uden at bruge dette, vil du sandsynligvis se en stor liste over visninger, samlinger osv., der er sikkerhedskopieret.
Verbose Mode
På bagsiden kan du bruge
--verbose
eller-v
parametre for at øge outputtet i dit terminal- eller kommandopromptvindue.mongodump --verbose
Du kan øge omfanget ved at gentage
-v
form flere gange.Eksempel:
mongodump -vvvv
At køre det på mit system øgede omfanget markant.
Resultater af backupforespørgsler
Du kan bruge
--forespørgslen
eller-q
parametre for at dumpe resultatet af en forespørgsel.Eksempel:
mongodump --db=PetHotel --collection=pets --query='{ "type":"Hund" }'
Når du gør dette, skal du omgive forespørgslen med enkelte anførselstegn. Du kan bruge dobbelte anførselstegn for felterne.
Arkiv og standardoutput
Du kan bruge
--arkivet
eller parameter for at skrive outputtet til en specificeret arkivfil eller, hvis arkivfilen er uspecificeret, til standardoutputtet (stdout
) stream, så du kan overføre til en anden proces.Eksempel på output til en arkivfil:
mongodump --archive=PetHotel.20201230.archive --db=PetHotel
I det næste eksempel skriver jeg til standardoutputstrømmen og sender derefter til
mongorestore
:mongodump --archive --db=PetHotel --collection=kæledyr --query='{ "type":"Hund" }' | mongorestore --archive --nsFrom='PetHotel.pets' --nsTo='PetHotel.dogs'
Det resulterer i en ny samling kaldet
hunde
vises iPetHotel
database (og samlingen indeholder kun dokumenter, der har entype
felt med værdiendog
).Adgangskontrol
De tidligere eksempler blev udført på den lokale maskine ved hjælp af standardporten. Dette betød, at vi var i stand til at køre
mongodump
uden at specificere ting som--host
,--port
,--brugernavn
osv.Her er et eksempel, der bruger disse parametre til at godkende som
homer
:mongodump --host=myhost.example.com --port=37017 --username=homer --authenticationDatabase=admin --out=/backups/mongodump-2020-12-30
Vi kunne også have brugt
--password
parameter, men det gjorde vi ikke. Hvis du sender--bruger
men ikke--password
, bliver du bedt om adgangskoden.Flere oplysninger om mongodump
mongodump
hjælpeprogrammet accepterer masser af andre nyttige parametre, og der er også forskellige faktorer at overveje, når du bruger det som en del af en backup- og gendannelsesstrategi.Se
mongodump
dokumentation på MongoDB-webstedet for mere info.Andre muligheder
mongodump
ogmongorestore
er enkle og effektive værktøjer til sikkerhedskopiering og gendannelse af små MongoDB-implementeringer, men er ikke ideelle til at tage backup af større systemer.Se MongoDB Backup Methods på MongoDB-webstedet for andre metoder til sikkerhedskopiering af dine MongoDB-databaser.