MongoDB Academy · Lektion

mongodump und mongorestore für vollständige Backups

Sie erstellen mit mongodump einen vollständigen BSON-Dump einer Datenbank und stellen ihn mit mongorestore in einem anderen Cluster wieder her.

Lektion 3 von 413 Schritte

mongodump und mongorestore für vollständige Backups ist eine kostenlose MongoDB Academy-Lektion auf CoddyKit. Dies ist Lektion 3 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des MongoDB Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der MongoDB Academy-Kurs umfasst insgesamt 4 Lektionen.

Warum mongodump für Sicherungen verwenden?

mongodump erstellt einen binären BSON-Snapshot einer Datenbank oder Collection. Anders als mongoexport, das menschenlesbares JSON erzeugt, bewahrt mongodump alle Informationen zu BSON-Typen exakt – einschließlich ObjectIds, Datumswerten, Dezimalzahlen und Binärdaten – ohne Verlust der Datentreue. Damit ist es das richtige Tool für vollständige Datenbanksicherungen und Migrationen zwischen MongoDB-Clustern, während sich mongoexport besser zum selektiven Teilen von Daten eignet.

Grundlegende Verwendung von mongodump

Wenn Sie mongodump ohne Argumente ausführen, werden alle Datenbanken der lokalen MongoDB-Instanz in ein Verzeichnis namens dump/ gesichert. Geben Sie --uri, --db und optional --collection an, um den Umfang einzugrenzen. Das Ausgabeverzeichnis enthält ein Unterverzeichnis pro Datenbank, jeweils mit .bson- und .metadata.json-Dateien für jede 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.json

Eine einzelne Collection sichern

Verwenden Sie --collection, um nur eine Collection aus einer Datenbank zu sichern. Dabei werden eine einzelne .bson-Datei und die zugehörige .metadata.json-Datei erzeugt, in der die Indexdefinitionen gespeichert sind. Gezielte Collection-Sicherungen sind nützlich, wenn Sie eine einzelne Collection migrieren möchten, ohne die gesamte Datenbank zu sichern.

# 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.json

Sicherung komprimieren

Große BSON-Sicherungen können erheblichen Speicherplatz beanspruchen. Verwenden Sie --gzip, um die Ausgabedateien beim Schreiben zu komprimieren. Jede .bson-Datei wird zu einer .bson.gz-Datei. Bei typischen Dokument-Collections wird meist eine Komprimierung um den Faktor 5 bis 10 erreicht. Die Komprimierung läuft im Prozess mongodump und erfordert beim Dekomprimieren mit mongorestore das entsprechende Flag --gzip.

# 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.gz

Als einzelne Datei archivieren

Verwenden Sie --archive, um die gesamte Sicherung in eine einzelne Archivdatei statt in eine Verzeichnisstruktur zu schreiben. Sie können die Ausgabe auch an gzip oder aws s3 cp weiterleiten, um Sicherung und Upload in einem Schritt durchzuführen. Dies ist das kompakteste und portabelste Sicherungsformat für die Automatisierung von Sicherungen in CI- oder Cron-Jobs.

# 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.gz

Grundlegende Verwendung von mongorestore

mongorestore liest ein von mongodump erstelltes Verzeichnis oder Archiv und fügt die Dokumente in einen MongoDB-Zielcluster ein. Nach dem Laden der Daten werden die Collections mit ihren Indexdefinitionen aus den .metadata.json-Dateien wiederhergestellt. Geben Sie den Zielcluster mit --uri und das Quellverzeichnis oder -archiv mit --dir oder --archive an.

# 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

Wiederherstellung unter einem anderen Datenbanknamen

Standardmäßig stellt mongorestore die Daten unter demselben Datenbanknamen wie in der Sicherung wieder her. Verwenden Sie --nsFrom und --nsTo (Namespace von/nach), um eine andere Datenbank oder einen anderen Collection-Namen zu verwenden. Dies ist besonders wichtig, wenn Sie Produktionsdaten in eine Staging-Datenbank mit einem anderen Namen klonen.

# Restore 'myapp' from dump into 'myapp_staging'
mongorestore \
  --uri 'mongodb://localhost:27017' \
  --nsFrom 'myapp.*' \
  --nsTo 'myapp_staging.*' \
  --dir /backups/myapp-2024-01-15

Das Flag --drop bei der Wiederherstellung

Wie mongoimport verfügt auch mongorestore über ein Flag --drop, das jede Collection vor der Wiederherstellung löscht. Ohne --drop führt mongorestore die wiederhergestellten Dokumente mit vorhandenen Daten zusammen – nützlich bei partiellen Wiederherstellungen. Mit --drop erhalten Sie einen vollständigen Ersatz der Collection. Das ist bei vollständigen Datenbankwiederherstellungen sicherer, da dadurch verhindert wird, dass veraltete Daten mit der Sicherung vermischt werden.

# Drop and fully replace all collections during restore
mongorestore \
  --uri 'mongodb://localhost:27017' \
  --db myapp \
  --drop \
  --dir /backups/myapp-2024-01-15/myapp

Parallele Wiederherstellung mit --numParallelCollections

Bei Datenbanken mit vielen Collections kann mongorestore mehrere Collections parallel wiederherstellen. Verwenden Sie --numParallelCollections (Standardwert: 4), um die Parallelität auf Servern mit hoher I/O-Kapazität zu erhöhen. Mehr parallele Wiederherstellungen verkürzen die Gesamtdauer, erhöhen jedoch den Speicher- und CPU-Verbrauch auf Client und Server.

# Restore 8 collections in parallel
mongorestore \
  --uri 'mongodb://restore-target:27017' \
  --dir /backups/myapp-2024-01-15 \
  --numParallelCollections 8

Sicherungen mit einem Cron-Job automatisieren

Automatisieren Sie tägliche Sicherungen, indem Sie ein Shell-Skript über einen Cron-Job ausführen. Das Skript erstellt ein mit einem Zeitstempel versehenes Sicherungsverzeichnis, führt mongodump aus, komprimiert das Ergebnis und lädt es optional in S3 oder einen anderen entfernten Speicher hoch. Überprüfen Sie stets den Exit-Code von mongodump, um fehlgeschlagene Sicherungen zu erkennen, bevor die vorherige Sicherung überschrieben wird.

#!/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
fi

Point-in-Time-Sicherungen in Atlas

MongoDB Atlas bietet automatisierte Point-in-Time-Sicherungen (PIT), die alle 6 Stunden Snapshots erstellen und eine Wiederherstellung auf jede Sekunde innerhalb des Aufbewahrungszeitraums ermöglichen (bis zu 35 Tage bei M10+-Tiers). Atlas-Sicherungen verwenden mongodump nicht, sondern nutzen Snapshots auf Dateisystemebene innerhalb der Storage Engine und ermöglichen dadurch Sicherungen ohne Auswirkungen auf die Leistung. Für selbst gehostetes MongoDB ist mongodump der wichtigste Sicherungsmechanismus. Es handelt sich jedoch um eine logische Sicherung, die laufende Transaktionen nicht erfassen kann.

Kurze Wissensprüfung

Testen Sie Ihr Verständnis der Konzepte zu MongoDB und NoSQL-Datenbanken aus dieser Lektion.

Zusammenfassung der Lektion

In dieser Lektion haben Sie Folgendes gelernt: mongodump erstellt binäre BSON-Sicherungen und bewahrt dabei sämtliche Typinformationen, mongorestore liest diese Sicherungen und stellt Collections mit ihren Indizes wieder her und --drop, --nsFrom/--nsTo und --gzip sind wichtige Flags für Sicherungsabläufe in Produktionsumgebungen. Als Nächstes schreiben wir Node.js-Seed-Skripte, um während der Entwicklung programmgesteuert Daten in MongoDB zu laden.

Kostenlos starten

Lerne JavaScript mit einem KI-Tutor — kostenlos

Schreibe und führe echten Code in deinem Browser aus, bekomme sofortige Hilfe von einem 24/7 KI-Tutor und setze dein Lernen im Web oder in der App fort.

Kurse
30
Lektionen
120

Häufig gestellte Fragen

Ist die Lektion „mongodump und mongorestore für vollständige Backups“ kostenlos?

Ja — der vollständige Text von „mongodump und mongorestore für vollständige Backups“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des MongoDB Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der MongoDB Academy-Kurs umfasst insgesamt 4 Lektionen.

Was lerne ich in „mongodump und mongorestore für vollständige Backups“?

Sie erstellen mit mongodump einen vollständigen BSON-Dump einer Datenbank und stellen ihn mit mongorestore in einem anderen Cluster wieder her. Du übst MongoDB Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.

Brauche ich Erfahrung, um MongoDB Academy zu starten?

Keine Vorkenntnisse erforderlich. MongoDB Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 3 von 4.

Wie lange dauert die Lektion „mongodump und mongorestore für vollständige Backups“?

Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.

Kann ich in dieser MongoDB Academy-Lektion Code schreiben und ausführen?

Ja. Jede MongoDB Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.

Alle Lektionen in diesem Kurs

  1. mongoimport: JSON- und CSV-Dateien laden
  2. mongoexport: Collections in Dateien exportieren
  3. mongodump und mongorestore für vollständige Backups
  4. Daten mit Node.js-Skripten bereitstellen
← Zurück zu MongoDB Academy