DBAtlas · Atlas für Datenbankbetrieb

MongoDB-Backup und -Restore (mongodump, mongorestore, Snapshot)

MongoDBStufe: MittelDauer: 45–90 Min.

Richtet für ein installiertes MongoDB eine Backup-Routine ein und beschreibt die Wiederherstellung aus dem Backup Szenario für Szenario. Backup: mongodump einer einzelnen Collection, einer Datenbank oder des gesamten Deployments (--archive --gzip; im Replica Set ein konsistenter Zeitpunkt mit --oplog, Lesen vom Secondary), Credential-Datei, zeitgesteuerte Backups mit Aufbewahrungsdauer per systemd-Timer/cron, Test-Restore und optional ein Dateisystem-Snapshot. Restore: Restore-Probe, vollständiger Restore, einzelne Datenbank/Collection, Rückkehr zu einem bestimmten Zeitpunkt aus Backup + Oplog, Klon in einen anderen Cluster und Sharded Cluster. Bei Hunderten von GB Daten, wenn eine schnelle Wiederherstellung nötig ist, oder im Sharded Cluster sind Snapshots oder ein Enterprise-Werkzeug (PBM, Ops Manager) mongodump vorzuziehen; die Auswahl wird in den ersten Schritten erklärt.

Topologie: Backup-Server oder ein Member + Replica Set / Einzelinstanz / Sharded Cluster (mongos)

Szenarien

  • Backup einrichten: mongodump, Zeitplanung und Test-Restore — Backup-Benutzer, Credential-Datei, manueller und zeitgesteuerter mongodump, Test-Restore unter neuem Namen; optional Snapshot und mongoexport. Wenn du das zum ersten Mal einrichtest, beginne hier.
  • Lässt sich das Backup wirklich wiederherstellen? (--dryRun und Probe auf einer temporären Instanz) — Ohne Live-Daten anzufassen: Integrität des Archivs, enthaltene Namespaces und Oplog, optional ein vollständiger Restore in einen temporären mongod mit Dokumentzählung.
  • Alle Daten aus dem Backup wiederherstellen (vollständiger Restore, --drop) — Daten sind weitgehend verloren oder beschädigt, und das Deployment kehrt auf den Zeitpunkt des Backups zurück. Schreibvorgänge nach dem Backup gehen verloren; die Anwendung steht während des Restores.
  • Einzelne Datenbank oder Collection zurückholen (--nsInclude, unter neuem Namen oder an Ort und Stelle) — Eine Collection/Datenbank wurde gelöscht oder beschädigt, der Rest ist intakt: Nur dieser Namespace kommt aus dem Backup; andere Daten bleiben unberührt, die Anwendung kann weiterlaufen.
  • Zu einem bestimmten Zeitpunkt zurückkehren: Backup + Oplog (versehentliches Drop, fehlerhaftes Update/Delete) — Die fehlerhafte Operation geschah nach dem Backup, und die Schreibvorgänge bis zu diesem Zeitpunkt werden ebenfalls gebraucht: Das letzte vollständige Backup wird wiederhergestellt, das Live-Oplog bis unmittelbar vor die fehlerhafte Operation angewendet (--oplogReplay --oplogLimit). Nur Replica Set.
  • Backup in einen anderen Cluster / auf einen anderen Server einspielen (Klon, Testumgebung, Migration) — Das Quell-Deployment bleibt unberührt: Das Backup wird in ein anderes Replica Set oder eine andere Instanz eingespielt (Test-/Reporting-Kopie, Servermigration, Versionswechsel); Benutzer werden optional übernommen.
  • Sharded Cluster wiederherstellen: Grenzen von mongodump und die richtige Methode — Die gesicherte Topologie ist ein Sharded Cluster: logischer Restore über mongos (Shard Keys neu anlegen, Balancer) oder physischer Wiederaufbau des gesamten Clusters aus koordinierten Snapshots.

Vor dem Start

  • Der gesicherte Server läuft auf einem unterstützten Betriebssystem; die Uhr ist per NTP synchronisiert und die Zeitzone stimmt (Backup-Dateinamen und Zeitplanung richten sich nach der lokalen Zeit).
  • Von diesem Server aus sind die Namen von … auflösbar und die Ports erreichbar.… Im Replica Set müssen die Namen im Connection String mit den Member-Namen in rs.conf() übereinstimmen; der Treiber verbindet sich zu diesen Namen.…
  • … liegt auf einer vom Datenträger der Daten getrennten Platte oder einer Netzwerkfreigabe, und der freie Platz beträgt mindestens die komprimierte Backup-Größe (meist 20–50 % der Daten) mal die Aufbewahrungsdauer. Ein Backup auf derselben Platte geht beim Verlust der Platte zusammen mit den Daten verloren.
  • Die Autorisierung ist aktiviert, und dir liegen der Benutzer … (root oder die Rollen userAdminAnyDatabase + clusterAdmin) und sein Passwort vor. Der Backup-Benutzer wird mit diesem Benutzer angelegt.
  • Das Oplog-Fenster ist deutlich länger als die Dauer eines vollständigen Backups (mindestens einige Stunden). --oplog sammelt die während des Backups entstehenden Oplog-Einträge; ist das Fenster kürzer als das Backup, schlägt das Backup fehl.… Bei der Point-in-Time-Recovery muss der erste Eintrag im Live-Oplog vor dem Zeitpunkt liegen, an dem das verwendete vollständige Backup beendet wurde; andernfalls sind die Operationen dazwischen nirgends vorhanden.…
  • HTTPS-Zugriff auf das MongoDB-Repo (repo.mongodb.org) besteht oder ein interner Mirror ist eingerichtet; sind die Werkzeuge bereits auf dem Server installiert, werden ihre Versionen angezeigt.
  • dbPath (…) liegt auf dem LV …, und die Volume Group hat mindestens … frei. Das WiredTiger-Journal (…/journal) muss auf demselben LV liegen; wurde es auf eine andere Platte verschoben, ist fsyncLock vor dem Snapshot Pflicht.
  • Du hast root- oder sudo-Rechte. Für einen vollständigen Restore liegen ein Wartungsfenster und die Freigabe des Anwendungsteams vor.… Vor dem Restore wurde der Vorfall dokumentiert (wann, welche Operation, wer); das Anwendungsteam weiß, welche Daten zurückkommen.…
  • Das Backup ist mit dem Szenario „Backup einrichten“ dieses Guides eingerichtet: Die Werkzeuge (mongorestore, mongosh) und die Credential-Datei … (…: backup + restore) sind auf diesem Server vorhanden. Andernfalls führe zuerst die ersten beiden Phasen des Szenarios Backup einrichten aus.
  • Beim Restore werden Daten und Indexe neu geschrieben: Auf dem Datenträger der Zielserver ist mindestens das 1,5-Fache der (unkomprimierten) wiederherzustellenden Daten frei.… Im Replica Set erhalten die Secondaries dieselben Schreibvorgänge per Replikation; das Oplog-Fenster schrumpft während des Restores.…
  • Für … ist freier Platz in Höhe der unkomprimierten Größe der wiederherzustellenden Daten (vollständiges Backup + Oplog) vorhanden. Der temporäre mongod lauscht nur auf 127.0.0.1, Port …; der Port muss frei sein.
  • Das Ziel (…) ist installiert und läuft, die Autorisierung ist aktiviert, und dir liegt das Passwort des Benutzers … (root) vor. Die Zielversion ist gleich der Quellversion oder neuer (z. B. 7.0 → 8.0); ein Restore auf eine ältere Version wird nicht unterstützt.

Phasen der Anleitung

  • Installation der Werkzeuge — MongoDB-…-Repo hinzufügen · MongoDB-…-Repo hinzufügen · mongodump, mongorestore und mongosh installieren · Backup-Verzeichnis vorbereiten
  • Backup-Benutzer und Credential-Datei — Backup-Benutzer anlegen · Credential-Datei schreiben (--config) · Verbindung testen
  • Manuelles Backup (mongodump) — Datengröße und Oplog-Fenster prüfen · Balancer stoppen · Backup mit mongodump erstellen · Balancer wieder starten · Backup prüfen (gzip und dryRun) · Teilmengen-Backup per Abfrage (--query)
  • Restore (mongorestore) — Test-Restore unter neuem Namen (--nsFrom/--nsTo) · Dokumentzahlen vergleichen · Testdatenbank löschen · Rolle für oplogReplay definieren · Vollständiger Restore an Ort und Stelle (--drop) · Temporäres Recht entziehen …
  • mongoexport / mongoimport (Datenübertragung, kein Backup) — Collection exportieren (mongoexport) · In eine separate Collection importieren (mongoimport) · Datentypen vergleichen und aufräumen
  • Dateisystem-Snapshot — LVM-Snapshot erstellen (mit fsyncLock) · Snapshot ins Backup-Verzeichnis archivieren · Dateikopie mit fsyncLock erstellen
  • Backup eines Sharded Clusters: Grenzen und der Enterprise-Weg — Methode für ein konsistentes Backup des Sharded Clusters wählen
  • Zeitgesteuertes Backup und Aufbewahrung — Balancer auf Zeiten außerhalb der Backup-Stunden beschränken · Backup-Skript schreiben · Skript ausführbar machen · SSH-Zugriff auf den entfernten Server vorbereiten · systemd-Service und -Timer anlegen · Zeitgesteuertes Backup manuell auslösen und prüfen …
  • Monitoring und Wartung — Alter des letzten Backups überwachen · Regelmäßige Wiederherstellungsübung
  • 1. Diagnose: Backup-Dateien und Werkzeuge — Backup-Dateien und die neuesten Backups der Reihe nach auflisten
  • 2. Probe: Archiv lesen — Integrität der Komprimierung prüfen (gzip -t) · Restore ohne Schreiben von Daten testen (--dryRun) · Enthält das Archiv ein Oplog? (konsistenter Zeitpunkt)
  • 3. Probe: vollständiger Restore in eine temporäre Instanz — mongod für die temporäre Instanz vorbereiten · Temporären mongod starten · Backup in die temporäre Instanz einspielen · Wiederhergestellte Daten zählen · Temporäre Instanz stoppen und entfernen
  • 4. Abschluss — Ergebnis der Probe dokumentieren
  • Sharded Cluster: Ein vollständiger Restore erfolgt nicht mit diesem Szenario — Zum Szenario für Sharded Cluster wechseln
  • 1. Diagnose: Ist ein vollständiger Restore das richtige Szenario? — Aktuellen Zustand und betroffene Daten ansehen · Restore ohne Schreiben von Daten testen (--dryRun)
  • 2. Sicherheitsnetz — Anwendung stoppen und Verbindungen prüfen · Aktuellen Zustand sichern (Rückfallpunkt)
  • 3. Durchführung: vollständiger Restore — Temporäres Recht für oplogReplay vergeben · Backup an Ort und Stelle wiederherstellen (--drop… --oplogReplay…) · Temporäres Recht entziehen · Temporäre Benutzer-Collections des Restores aufräumen
  • 4. Prüfung — Dokument- und Indexanzahl prüfen · Prüfen, ob das Replica Set aufgeholt hat
  • 5. Abschluss — Neues vollständiges Backup erstellen und Anwendung starten
  • 1. Diagnose: aktueller Stand des Namespace und Stand im Backup — Live-Zustand ansehen · Restore ohne Schreiben von Daten testen (--dryRun)
  • 2. Sicherheitsnetz — Aktuellen Zustand sichern (Rückfallpunkt)
  • 2. Durchführung: unter neuem Namen wiederherstellen — Backup unter neuem Namen wiederherstellen (--nsFrom/--nsTo) · Zahlen im Backup und in der Live-Umgebung vergleichen · Gelöschte Dokumente in die Live-Umgebung zurückschreiben ($merge) · Temporäre Kopie löschen
  • 3. Durchführung: an Ort und Stelle wiederherstellen (--drop) — Shard Key erhalten: Collection neu sharden · Namespace an Ort und Stelle wiederherstellen
  • Point-in-Time-Recovery nur im Replica Set — In diesem Deployment ist keine Point-in-Time-Recovery mit dem Oplog möglich
  • 1. Diagnose: Zeitpunkt der fehlerhaften Operation und Oplog-Fenster — Fehlerhafte Operation im Oplog finden · Prüfen, ob das vollständige Backup im Oplog-Fenster liegt
  • 2. Sicherheitsnetz: Live-Oplog kopieren — Kopie des Live-Oplogs erstellen · Aktuellen Zustand sichern (Rückfallpunkt)
  • 3. Durchführung: auf einer temporären Instanz zu diesem Zeitpunkt zurückkehren — mongod für die temporäre Instanz vorbereiten · Temporären mongod starten · Vollständiges Backup in die temporäre Instanz einspielen · Live-Oplog bis unmittelbar vor die fehlerhafte Operation anwenden · Zurückgeholte Daten auf der temporären Instanz prüfen · Zurückgeholte Daten in die Live-Umgebung übernehmen …
  • 4. Abschluss — Neues vollständiges Backup erstellen und Ursache beseitigen
  • 1. Diagnose: Ist das Ziel richtig und kompatibel? — Prüfen, dass das Ziel nicht die Quelle ist, und seine Version prüfen · Restore ohne Schreiben von Daten testen (--dryRun)
  • 2. Sicherheitsnetz und Zugangsdaten für das Ziel — Temporäre Credential-Datei für das Ziel schreiben · Vorhandene Daten auf dem Ziel sichern
Schritt-für-Schritt-Plan für Ihre Umgebung öffnen →