mongodump och mongorestore för fullständiga säkerhetskopior
Ni skapar en fullständig BSON-dump av en databas och återställer den till ett annat kluster med mongorestore.
mongodump och mongorestore för fullständiga säkerhetskopior är en gratis lektion i MongoDB Academy på CoddyKit. Detta är lektion 3 av 4. Ni kan läsa hela lektionen gratis nedan och sedan öva praktiskt i webbläsaren med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt. Den ingår i lärvägen för MongoDB Academy, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i MongoDB Academy innehåller totalt 4 lektioner.
Varför använda mongodump för säkerhetskopior?
mongodump skapar en binär BSON-ögonblicksbild av en databas eller collection. Till skillnad från mongoexport, som skapar läsbar JSON, bevarar mongodump all BSON-ty information exakt – ObjectId-värden, datum, decimaltal och binär data – utan någon förlust av precision. Därför är det rätt verktyg för fullständiga säkerhetskopior och migreringar av databaser mellan MongoDB-kluster, medan mongoexport passar bättre för selektiv datadelning.
Grundläggande användning av mongodump
Om du kör mongodump utan argument dumpas alla databaser från den lokala MongoDB-instansen till en katalog med namnet dump/. Ange --uri, --db och eventuellt --collection för att begränsa omfånget. Utdatakatalogen innehåller en underkatalog per databas, och varje sådan katalog innehåller .bson- och .metadata.json-filer för varje collection.
# Dump the entire 'myapp' database
mongodump \
--uri 'mongodb://localhost:27017' \
--db myapp \
--out /backups/myapp-2024-01-15
# Output structure:
# /backups/myapp-2024-01-15/
# myapp/
# users.bson
# users.metadata.json
# products.bson
# products.metadata.jsonDumpa en enskild collection
Använd --collection för att bara dumpa en collection från en databas. Då skapas en enda .bson-fil och motsvarande .metadata.json-fil, som lagrar indexdefinitionerna. Riktade collection-dumpar är användbara när du vill extrahera en enda collection för migrering utan att säkerhetskopiera hela databasen.
# Dump only the 'orders' collection
mongodump \
--uri 'mongodb://localhost:27017' \
--db myapp \
--collection orders \
--out /backups/orders-backup
# Result: /backups/orders-backup/myapp/orders.bson
# /backups/orders-backup/myapp/orders.metadata.jsonKomprimera dumpen
Stora BSON-dumpar kan ta upp mycket diskutrymme. Använd --gzip för att komprimera utdatafilerna medan de skrivs. Varje .bson-fil blir en .bson.gz-fil, vilket vanligtvis ger 5–10 gångers komprimering för typiska dokumentsamlingar. Komprimeringen körs i mongodump-processen och kräver en motsvarande --gzip-flagga i mongorestore för dekomprimering.
# Create a compressed backup
mongodump \
--uri 'mongodb://localhost:27017' \
--db myapp \
--gzip \
--out /backups/myapp-compressed-2024-01-15
# Files are now .bson.gz:
# /backups/myapp-compressed-2024-01-15/myapp/users.bson.gz
# /backups/myapp-compressed-2024-01-15/myapp/orders.bson.gzArkivera till en enda fil
Använd --archive för att skriva hela dumpen till en enda arkivfil i stället för till ett katalogträd. Du kan också skicka den vidare till gzip eller aws s3 cp för att komprimera och ladda upp säkerhetskopian i ett enda steg. Detta är det mest kompakta och portabla dumpformatet för automatisering av säkerhetskopior i CI- eller cron-jobb.
# Archive + compress to a single file
mongodump \
--uri 'mongodb://localhost:27017' \
--db myapp \
--archive=/backups/myapp-2024-01-15.archive.gz \
--gzip
# Or pipe to gzip
mongodump \
--uri 'mongodb://localhost:27017' \
--db myapp \
--archive | gzip > /backups/myapp-2024-01-15.gzGrundläggande användning av mongorestore
mongorestore läser en katalog eller ett arkiv som skapats av mongodump och infogar dokumenten i ett målkluster i MongoDB. Verktyget återskapar collections med deras indexdefinitioner från .metadata.json-filerna efter att data har lästs in. Ange målklustret med --uri och källkatalogen eller arkivet med --dir eller --archive.
# Restore the full myapp database from a directory backup
mongorestore \
--uri 'mongodb://restore-target:27017' \
--dir /backups/myapp-2024-01-15
# Restore a gzip-compressed directory backup
mongorestore \
--uri 'mongodb://restore-target:27017' \
--gzip \
--dir /backups/myapp-compressed-2024-01-15Återställa till ett annat databasnamn
Som standard återställer mongorestore till samma databasnamn som i dumpen. Använd --nsFrom och --nsTo (namespace från/till) för att återställa till ett annat databas- eller collectionnamn. Detta är viktigt när produktionsdata klonas till en staging-databas med ett annat namn.
# Restore 'myapp' from dump into 'myapp_staging'
mongorestore \
--uri 'mongodb://localhost:27017' \
--nsFrom 'myapp.*' \
--nsTo 'myapp_staging.*' \
--dir /backups/myapp-2024-01-15Flaggan --drop vid återställning
Precis som mongoimport har mongorestore en --drop-flagga som tar bort varje collection innan den återställs. Utan --drop slår mongorestore ihop de återställda dokumenten med befintliga data, vilket är användbart vid partiella återställningar. Med --drop får du en ren ersättning av collectionen, vilket är säkrare vid fullständiga databasåterställningar eftersom gammal data inte blandas med säkerhetskopian.
# Drop and fully replace all collections during restore
mongorestore \
--uri 'mongodb://localhost:27017' \
--db myapp \
--drop \
--dir /backups/myapp-2024-01-15/myappParallell återställning med --numParallelCollections
För databaser med många collections kan mongorestore återställa flera collections parallellt. Använd --numParallelCollections (standardvärde: 4) för att öka parallelliteten på servrar med hög I/O-kapacitet. Fler parallella återställningar minskar den totala återställningstiden, men ökar minnes- och processoranvändningen på både klienten och servern.
# Restore 8 collections in parallel
mongorestore \
--uri 'mongodb://restore-target:27017' \
--dir /backups/myapp-2024-01-15 \
--numParallelCollections 8Automatisera säkerhetskopior med ett cron-jobb
Automatisera dagliga säkerhetskopior genom att köra ett shellskript från ett cron-jobb. Skriptet skapar en tidsstämplad säkerhetskopiekatalog, kör mongodump, komprimerar resultatet och kan även ladda upp det till S3 eller annan fjärrlagring. Kontrollera alltid mongodumps exitkod för att upptäcka misslyckade säkerhetskopior innan den föregående säkerhetskopian skrivs över.
#!/bin/bash
DATE=$(date +%Y%m%d)
BACKUP_DIR="/backups/myapp-$DATE"
mongodump \
--uri "$MONGO_URI" \
--db myapp \
--gzip \
--out "$BACKUP_DIR"
if [ $? -eq 0 ]; then
echo "Backup successful: $BACKUP_DIR"
else
echo "Backup FAILED!"
exit 1
fiSäkerhetskopior vid en viss tidpunkt i Atlas
MongoDB Atlas tillhandahåller automatiserade Point-in-Time-säkerhetskopior (PIT) som skapar ögonblicksbilder var sjätte timme och gör det möjligt att återställa till valfri sekund inom lagringsperioden (upp till 35 dagar på nivåerna M10 och högre). Atlas-säkerhetskopior använder inte mongodump – i stället används ögonblicksbilder på filsystemnivå i lagringsmotorn, utan påverkan på systemet. För självhostad MongoDB är mongodump den primära mekanismen för säkerhetskopiering, men det är en logisk säkerhetskopia och kan inte fånga pågående transaktioner.
Snabb kontroll
Testa dina kunskaper om begreppen MongoDB och NoSQL-databaser från den här lektionen.
Sammanfattning av lektionen
I den här lektionen har du lärt dig att: mongodump skapar binära BSON-säkerhetskopior som bevarar all typinformation, mongorestore läser dessa dumpar och återskapar collections med deras index och --drop, --nsFrom/--nsTo och --gzip är viktiga flaggor i arbetsflöden för säkerhetskopiering i produktion. Härnäst skriver vi Node.js seed-skript för att programmatiskt läsa in data i MongoDB under utvecklingen.
Lär dig JavaScript med en AI-lärare – gratis
Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.
- Kurser
- 30
- Lektioner
- 120
Vanliga frågor
Är lektionen ”mongodump och mongorestore för fullständiga säkerhetskopior” gratis?
Ja – hela texten till ”mongodump och mongorestore för fullständiga säkerhetskopior” kan läsas gratis här på webben. Om Ni vill öva interaktivt med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt och låsa upp resten av kursen i MongoDB Academy, kan Ni uppgradera till CoddyKit PRO. Kursen i MongoDB Academy innehåller totalt 4 lektioner.
Vad lär jag mig i ”mongodump och mongorestore för fullständiga säkerhetskopior”?
Ni skapar en fullständig BSON-dump av en databas och återställer den till ett annat kluster med mongorestore. Ni övar på MongoDB Academy med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.
Behöver jag någon erfarenhet för att börja lära mig MongoDB Academy?
Du behöver inga förkunskaper. Utbildningen i MongoDB Academy på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 3 av 4.
Hur lång tid tar lektionen ”mongodump och mongorestore för fullständiga säkerhetskopior”?
De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.
Kan jag skriva och köra kod i den här MongoDB Academy-lektionen?
Ja. Varje MongoDB Academy-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.
Alla lektioner i den här kursen
- mongoimport: läsa in JSON- och CSV-filer
- mongoexport: exportera samlingar till filer
- mongodump och mongorestore för fullständiga säkerhetskopior
- Förifylla data med Node.js-skript