In MongoDB gibt es mehrere Strategien, um Daten zu sichern (Backup) und wiederherzustellen (Restore). Die Wahl der richtigen Methode hängt von der Größe der Datenbank, der Verfügbarkeit und der Konsistenzanforderungen ab. Hier ist ein Überblick über die gängigen Ansätze:
MongoDB bietet Mechanismen, um Daten während des Betriebs zu sichern, ohne die Datenbank herunterzufahren. Diese Methode ist besonders für produktive Umgebungen wichtig, in denen Ausfallzeiten vermieden werden müssen.
mongodump und
mongorestoreDiese Tools gehören zur MongoDB-Distribution und werden für inkrementelle Backups und Restores auf Dokumentebene verwendet.
Vorteile:
Backup mit mongodump:
mongodump --host <HOST> --port <PORT> --db <DB_NAME> --out <BACKUP_PATH>Restore mit mongorestore:
mongorestore --host <HOST> --port <PORT> --db <DB_NAME> <BACKUP_PATH>Einschränkung:
Wenn die Daten auf einem Dateisystem wie XFS oder ZFS gespeichert sind, kannst du Snapshots verwenden, um schnell eine konsistente Sicherung zu erstellen.
Aktivierung von Journaling in MongoDB (Standard für replizierte Umgebungen).
Blockiere kurzzeitig Schreiboperationen:
db.fsyncLock()Erstelle einen Snapshot mit dem Dateisystem-Tool.
Entsperre die Datenbank:
db.fsyncUnlock()Bei dieser Methode wird die MongoDB-Instanz gestoppt, und der Datenbankpfad wird gesichert.
Stoppe den MongoDB-Dienst:
sudo systemctl stop mongodKopiere den Datenbankpfad (Standard:
/var/lib/mongodb):
cp -r /var/lib/mongodb /backup/mongodbStarte die Datenbank neu:
sudo systemctl start mongodIn replizierten oder geschachtelten (sharded) Umgebungen ändern sich die Backup-Strategien:
In einem Replikatset kann ein Backup vom Secondary Node gemacht werden, ohne den Primärknoten zu beeinträchtigen.
Verbinde dich mit einem Secondary Node.
Erstelle ein Backup mit mongodump oder
Dateisystem-Snapshot.
Stelle sicher, dass der Node während des Backups in den
hidden-Status versetzt wird:
rs.conf().members[<nodeIndex>].hidden = trueFür einen Sharded Cluster erfordert das Backup zusätzliche Schritte, da Daten auf mehrere Shards verteilt sind.
mongodump in Verbindung mit dem Router
(mongos), um sicherzustellen, dass alle Daten konsistent
erfasst werden.Für Umgebungen mit großen Datenmengen und niedrigen Backup-Fenstern sind inkrementelle Backups sinnvoll. MongoDB unterstützt dies jedoch nicht nativ.
--oplog.MongoDB bietet Tools und Dienste für automatisierte Sicherungen:
In Atlas, der Managed-Cloud-Lösung von MongoDB, gibt es integrierte automatische Backups.
Ein Open-Source-Tool für automatisierte Backups in großen Umgebungen.
Das Restore-Verfahren hängt von der verwendeten Backup-Strategie ab:
mongorestore für
mongodump-Backups:
mongorestore --drop --host <HOST> --port <PORT> <BACKUP_PATH>Restore von Dateisystem-Snapshots:
Stoppe die MongoDB-Instanz.
Kopiere die gesicherten Daten zurück:
cp -r /backup/mongodb /var/lib/mongodbStarte die Instanz neu.
Replikatsets und Cluster:
mongodump und mongorestore.Jede Strategie sollte regelmäßig getestet werden, um sicherzustellen, dass die Wiederherstellung zuverlässig funktioniert.