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
--outeller-ofor 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
--dbparameter for at angive en database, der skal sikkerhedskopieres.mongodump --db=krankykranesDette dumper
krankykranesdatabase til standarddump/mappe.Sikkerhedskopiér en specifik samling
Du kan bruge
--collectioneller-cfor at angive en samling, der skal sikkerhedskopieres.Eksempel:
mongodump --db=krankykranes --collection=produkterEller:
mongodump --db=krankykranes -c=produkterDette dumper
produkternesamling tildump/krankykranesmappe.Ekskluderer samlinger
Du kan også bruge
--excludeCollectionparameter for at angive en specifik samling, der skal udelukkes fra sikkerhedskopien (dvs. ikke inkludere i sikkerhedskopien).Eksempel:
mongodump --db=PetHotel --excludeCollection=medarbejdereDette dumper alle samlinger fra
PetHoteldatabase undtagenmedarbejdernesamling.For at ekskludere mere end én samling, brug en separat
--excludeCollectionparameter for hver samling, du vil ekskludere.Eksempel:
mongodump --db=PetHotel --excludeCollection=medarbejdere --excludeCollection=studerendeDet ekskluderer
medarbejderneogeleversamlinger fra sikkerhedskopien.Du kan også bruge
--excludeCollectionsWithPrefixparameter for at ekskludere samlinger med et givet præfiks.mongodump --db=PetHotel --excludeCollectionsWithPrefix=pDet 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æledyrDu kan bruge flere
--excludeCollectionsWithPrefixargumenter for at ekskludere samlinger med flere præfikser.Eksempel:
mongodump --db=PetHotel --excludeCollectionsWithPrefix=p --excludeCollectionsWithPrefix=sKomprimer outputtet
Du kan bruge
--gzipparameter for at komprimere outputtet.mongodump --gzip --db=krankykranesDette komprimerer de enkelte filer.
trædumpResultat:
dump└── krankykranes ├── employee.bson.gz ├── employee.metadata.json.gz ├── products.bson.gz └── products.metadata.json.gzcode >Vi kan se, at alle filer har
.gzudvidelse.Når du udskriver til en arkivfil eller standard ud-stream, er
--gzipoption komprimerer arkivfilen eller dataoutputtet til streamen.Konverter visninger til samlinger
Du kan bruge
--viewsAsCollectionsparameter for at eksportere skrivebeskyttede visninger som samlinger.mongodump --db=PetHotel --viewsAsCollectionsNår du eksporterer en visning som en samling,
mongodumpproducerer en BSON-fil, der indeholder dokumenterne i visningen. Hvis du brugermongorestorefor at gendanne den producerede BSON-fil, vil visningen blive gendannet som en samling.Uden at bruge dette argument,
mongodumpeksporterer hver visnings metadata. Hvis du inkluderer en visnings metadatafil i enmongorestoreoperation, genskabes visningen.Brug af
--viewsAsCollectionsudelader også alle standardkollektioner. Derfor, når jeg kører ovenstående kode, vil mindump/mappestrukturen ser sådan ud:trædumpResultat:
dump└── PetHotel ├── pettypes.bson └── pettypes.metadata.jsonI mit
PetHoteldatabase, 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.bsonfil 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=pettypesKør derefter trækommandoen for at få mappestrukturen.
trædumpResultat:
dump└── PetHotel └── pettypes.metadata.jsonSå vi kan se, at kun metadataene for visningen er dumpet.
Støjsvag tilstand
Du kan bruge
--quietparameter for at begrænse output i dit terminal- eller kommandopromptvindue.mongodump --quietUden at bruge dette, vil du sandsynligvis se en stor liste over visninger, samlinger osv., der er sikkerhedskopieret.
Verbose Mode
På bagsiden kan du bruge
--verboseeller-vparametre for at øge outputtet i dit terminal- eller kommandopromptvindue.mongodump --verboseDu kan øge omfanget ved at gentage
-vform flere gange.Eksempel:
mongodump -vvvvAt køre det på mit system øgede omfanget markant.
Resultater af backupforespørgsler
Du kan bruge
--forespørgsleneller-qparametre 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
--arkiveteller 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=PetHotelI 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
hundevises iPetHoteldatabase (og samlingen indeholder kun dokumenter, der har entypefelt 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
mongodumpuden at specificere ting som--host,--port,--brugernavnosv.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-30Vi kunne også have brugt
--passwordparameter, men det gjorde vi ikke. Hvis du sender--brugermen ikke--password, bliver du bedt om adgangskoden.Flere oplysninger om mongodump
mongodumphjæ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
mongodumpdokumentation på MongoDB-webstedet for mere info.Andre muligheder
mongodumpogmongorestoreer 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.