Auf einen Blick: Mongorestore ist ein Dienstprogramm, das zur Wiederherstellung von MongoDB-Backups entwickelt wurde, die mit mongodump erstellt wurden, wodurch die Datenwiederherstellung bestehender Datenbanken oder die Erstellung neuer Datenbanken ermöglicht werden. Es unterstützt mehrere MongoDB-Versionen und bietet Funktionen wie die Wiederherstellung aus Standard-Eingabe- und Archivdateien.
- Mongorestore überschreibt während der Restaurierung keine bestehenden Dokumente.
- Es ist unerlässlich, kompatible Versionen von Mongodump und Mongorestore für eine effektive Wiederherstellung zu verwenden.
Es ist unerlässlich, eine effiziente und zuverlässige Methode zur Datenwiederherstellung nach dem Sichern der Daten während des Backup- und Wiederherstellungsprozesses zu haben. Berücksichtigen Sie die Unterschiede:
- Eine korrekt konfigurierte Wiederherstellungsmethode bedeutet, dass Benutzer die Daten erfolgreich in den vorherigen Zustand zurücksetzen können.
- Eine schlechte Wiederherstellungsmethode macht den gesamten Backup-Prozess wirkungslos, da sie verhindert, dass Nutzer auf die gesicherten Daten zugreifen und sie wiederherstellen können.
Der Mongorestore-Befehl ist der Schwesterbefehl des Mongodump-Befehls. Sie können die vom Mongodump-Befehl erstellten Dumps (Backups) mit dem MongoRestore-Befehl in eine MongoDB-Instanz wiederherstellen. In diesem Artikel erfahren Sie, wie Sie den MongoRestore-Befehl nutzen, um MongoDB-Backups effektiv wiederherzustellen.
Was ist Mongorestore?
Mongorestore ist ein einfaches Dienstprogramm, das zur Wiederherstellung von Backups verwendet wird. Es kann Daten von beidem laden:
- Eine Datenbank-Dump-Datei, die mit dem Mongodump-Befehl erstellt wurde
- Der Standardinput für eine Mongod- oder Mongos-Instanz
Ab MongoDB 4.4 ist das Mongorestore-Dienstprogramm nicht mehr im Basis-MongoDB-Serverinstallationspaket enthalten. Stattdessen wird es als separates Paket innerhalb des MongoDB Database Tools-Pakets verteilt. Dadurch kann das Dienstprogramm ab 100.0.0 ein separates Versionsschema haben. Das Mongorestore-Dienstprogramm unterstützt die MongoDB-Versionen 4.4, 4.2, 4.0 und 3.6. Es kann auch mit früheren Versionen von MongoDB funktionieren, aber die Kompatibilität ist nicht garantiert. Zusätzlich unterstützt Mongorestore eine Vielzahl von Plattformen und Betriebssystemen von x86 bis s390x; die vollständige Kompatibilitätsliste finden Sie in der offiziellen Dokumentation.
Mongorestore-Verhalten
Hier ist eine Liste von Dingen, die du über den Mongo-Restore-Befehl und das Verhalten des Mongorestore-Utilitys wissen musst.
- Das Mongorestore-Dienstprogramm ermöglicht es Nutzern, Daten in eine bestehende Datenbank zurückzusetzen oder eine neue Datenbank zu erstellen. Beim Wiederherstellen von Daten in eine bestehende Datenbank verwendet mongorestore nur Einfügebegriffe und führt keine Updates durch. Dadurch werden bestehende Dokumente mit einem passenden Wert für das Feld _id der Dokumente im Backup nicht vom Wiederherstellungsprozess überschrieben.
Dies führt zu einem doppelten Schlüsselfehler während des Wiederherstellungsprozesses, wie hier gezeigt:
- Da mongodump keine Indizes sichert, erstellt der Mongorestore-Befehl die von mongodump erfassten Indizes wieder.
- Die beste Praxis beim Sichern und Wiederherstellen einer Datenbank ist die Verwendung der entsprechenden Versionen sowohl von mongodump als auch mongorestore. Wenn ein Backup mit einer bestimmten Version des mongodump-Programms erstellt wird, ist es ratsam, die entsprechende Version des mongorestore-Programms für die Wiederherstellungsoperation zu verwenden.
- Mongorestore stellt die "system.profile"-Sammlungsdaten nicht wieder her.
- Das mongorestore-Dienstprogramm ist vollständig konform mit FIPS-Verbindungen (Federal Information Processing Standard), um Wiederherstellungsoperationen durchzuführen.
- Wenn Sie Daten in eine MongoDB-Instanz mit Zugriffskontrolle wiederherstellen, müssen Sie sich folgender Szenarien bewusst sein:
- Wenn der Wiederherstellungsdatensatz die Sammlung "system.profile" nicht enthält und Sie den Mongorestore-Befehl ohne die –oplogReply-Option ausführen, stellt die Rolle "restore" die notwendigen Berechtigungen zur Durchführung des Wiederherstellungsprozesses bereit.
- Beim Wiederherstellen von Backups, die die "system.profile"-Sammlung enthalten, versucht mongorestore, auch wenn es diese Sammlung nicht wiederherstellen würde, eine neue "system.profile"-Sammlung zu erstellen. In diesem Fall können Sie die Rollen "dbAdmin" und "dbAdminAnyDatabase" verwenden, um die notwendigen Berechtigungen bereitzustellen.
- Um den Mongorestore-Befehl mit der –oplogReply-Option auszuführen, muss der Benutzer eine neue, benutzerdefinierte Rolle mit anyAction-in-anyResource-Berechtigungen erstellen.
- Man kann das Mongorestore-Tool nicht in einer Backup-Strategie verwenden, wenn man Sharded-Cluster mit laufenden Sharded-Transaktionen sichert und wiederherstellt. Diese Änderung wurde in MongoDB 4.2 eingeführt. Beim Umgang mit geteilten Clustern wären MongoDB Cloud Manager oder Ops Manager die empfohlenen Lösungen, da sie die Atomität der Transaktionen über Shards hinweg aufrechterhalten können.
- Der Mongorestore-Befehl sollte aus der Befehlsschale des Systems ausgeführt werden, da er ein separates Datenbankprogramm ist.
Verwendung von MongoDB mongorestore
In diesem Abschnitt erfahren Sie die grundlegende Nutzung des Mongorestore-Programms in einer eigenständigen MongoDB-Instanz.
Grundlegende Mongorestore-Syntax
mongorestore
Die grundlegende Methode, eine Datenbank wiederherzustellen, besteht darin, den Mongorestore-Befehl zu verwenden, um das Backup-Verzeichnis (Dump-Verzeichnis) ohne Optionen anzugeben. Diese Option eignet sich für Datenbanken, die sich im localhost (127.0.0.1) mit Port 27017 befinden. Der Wiederherstellungsprozess erstellt bei Bedarf neue Datenbanken und Sammlungen und protokolliert auch den Fortschritt.
mongorestore ./dump/
Ergebnis:
Im obigen Beispiel sehen Sie, wie man die "Fahrzeuge"-Datenbank mit all ihren Sammlungen und Dokumenten erfolgreich wiederherstellt. Dadurch wird eine neue Datenbank namens Fahrzeuge in der MongoDB-Instanz erstellt, die alle Sammlungen und Dokumente des Backups enthält. Sie können den Wiederherstellungsprozess überprüfen, indem Sie sich in die MongoDB-Instanz einloggen.
use vehicles
show collections
db.vehicleinformation.find()
Ergebnis:
Datenwiederherstellung in eine entfernte MongoDB-Instanz mittels Mongostore
Um Daten in eine entfernte MongoDB-Instanz wiederherzustellen, müssen Sie die Verbindung herstellen. Die Verbindung zu einer Datenbank kann mit folgenden Angaben angegeben werden:
- Die URI-Verbindungsstring
- Die Host-Option
- Die Host- und Port-Option
Verbindung über die URI-Option:
mongorestore [additional options] --uri="mongodb://:" [restore directory/file]
Verbindung über die Host-Option:
mongorestore [additional options] --host=":" [restore directory/file]
Verbindung über Host- und Portoptionen:
mongorestore [additional options] --host="" --port= [restore directory/file]
Das Mongostore-Beispiel unten zeigt Ihnen, wie Sie ein Backup der entfernten MongoDB-Instanz wiederherstellen. Die ausführliche Option bietet den Nutzern eine detaillierte Aufschlüsselung des Wiederherstellungsprozesses.
mongorestore --verbose --host="10.10.10.59" --port=27017 ./dump/
Ergebnis:
Wiederherstellung einer sicheren MongoDB-Instanz
Wenn Sie sich mit einer zugriffsgesteuerten MongoDB-Instanz verbinden, müssen Sie:
- Benutzername
- Passwort
- Authentifizierungsdatenbankoptionen
Zusätzlich unterstützt mongorestore schlüsselbasierte Authentifizierungen. Es ist notwendig sicherzustellen, dass der authentifizierte Benutzer die erforderlichen Berechtigungen/Rollen für den Wiederherstellungsprozess hat. Authentifizierungssyntax:
mongorestore [additional options] --authenticationDatabase= -u= -p=
Der folgende Wiederherstellungsbefehl zeigt, wie man sich mit einem entfernten MongoDB-Server verbindet, wobei Benutzername und Passwort zur Authentifizierung verwendet werden.
mongorestore --host=10.10.10.59 --port=27017 --authenticationDatabase="admin" -u="barryadmin" -p="testpassword" ./dump/
Ergebnis:
Auswahl von Datenbanken und Sammlungen
Mit der –nsInclude-Option können Benutzer angeben, welche Datenbank oder Sammlung wiederhergestellt werden muss. Bei der Verwendung der –nsInclude-Option können Sie das Namensraummuster (z. B. "vehicles.*", "vehicles.vehicleInformation") verwenden, um zu definieren, welche Datenbank oder Sammlung enthalten sein soll. Um mehrere Namensräume anzugeben, können Sie den Befehl –nsInclude mehrfach in einem einzigen Befehl verwenden. Der Befehl -nsInclude unterstützt außerdem das Hinzufügen von Wildcards im definierten Namensraum. Die Optionen –db und –collection sind veraltet und führen zu folgendem Fehler.
Um eine Datenbank oder Sammlung auszuschließen, können Sie den Befehl –nsExclude verwenden. Auswahl einer Datenbank/Sammlung:
mongorestore [additional options] --nsInclude= (${DATABASE}.${COLLECTION}) [restore directory/file]
Ausschluss einer Datenbank/Sammlung:
mongorestore [additional options] --nsExclude= (${DATABASE}.${COLLECTION}) [restore directory/file]
Im folgenden Beispiel sehen Sie, wie man die vollständige "Personen"-Datenbank wiederherstellt. Sie können die gesamte Datenbank einbeziehen, indem Sie den "Personen"-Namensraum mit dem Sternchen als Wildcard-Muster angeben. Dies stellt alle Daten in der Datenbank wieder her.
mongorestore --nsInclude=persons.* --host=10.10.10.59 --port=27017 --authenticationDatabase="admin" -u="barryadmin" -p="testpassword" ./dump/
Ergebnis:
Verwenden Sie mongostore, um Daten aus einer Archivdatei wiederherzustellen
Das Dienstprogramm mongorestore unterstützt Wiederherstellungen aus einer Archivdatei. Die Option –archive kann verwendet werden, um die Archivdatei auszuwählen, und die Optionen –nsInclude und –nsExclude können zusammen mit der Archive-Option verwendet werden.
mongorestore [additional options] --archive=
Das folgende Beispiel zeigt, wie man eine Archivdatei bei der Wiederherstellung von Daten definiert. Die –nsInclude-Option wird verwendet, um anzugeben, welche Sammlung aus der Archivdatei in die Datenbank zurückgelegt werden soll.
mongorestore -v --nsInclude=vehicles.vehicleinformation --host=10.10.10.59 --port=27017 --authenticationDatabase="admin" -u="barryadmin" -p="testpassword" --archive=db.archive
Ergebnis:
Datenwiederherstellung aus einer komprimierten Datei
Das mongodump-Dienstprogramm verwendet die –gzip-Option, um die einzelnen JSON- und BSON-Dateien zu komprimieren. Diese komprimierten Backups können auch zur Wiederherstellung der Datenbank verwendet werden. Die komprimierte Datei kann außerdem mit den Optionen –nsInclude und –nsExclude gefiltert werden.
mongorestore --gzip [additional options] [restore directory/file]
Sie können ein komprimiertes MongoDB-Backup mit den folgenden Befehlen wiederherstellen. Das komprimierte Backup wird im Verzeichnis "backupzip" gespeichert.
mongorestore --gzip -v --nsInclude=vehicles.vehicleinformation --host=10.10.10.59 --port=27017 --authenticationDatabase="admin" -u="barryadmin" -p="testpassword" ./backupzip/
Ergebnis:
Der gleiche Prozess kann auf eine komprimierte Archivdatei angewendet werden. Das folgende Mongostore-Beispiel zeigt, wie man Daten aus einer komprimierten Archivdatei wiederherstellt.
mongorestore --gzip -v --nsInclude=vehicles.vehicleinformation --host=10.10.10.59 --port=27017 --authenticationDatabase="admin" -u="barryadmin" -p="testpassword" --archive=db.archive
Ergebnis:
Mongostore-Befehl zur Wiederherstellung von Daten aus Standardeingaben
Der Mongostore-Befehl "mongorestore" ermöglicht es Benutzern, Daten aus Standardeingaben auszulesen und diese Daten im Wiederherstellungsprozess zu verwenden. Sie können die Daten lesen, indem Sie die –archive-Option ohne Dateinamen angeben.
mongodump [additional options] --archive | mongorestore [additional options] –archive
Das folgende Beispiel zeigt, wie man ein Backup aus einer sicheren MongoDB-Datenbank mit mongodump erstellt und es als Standardeingabe an den Mongorestore-Befehl übergibt, um in einer unsicheren, entfernten MongoDB-Instanz wiederhergestellt zu werden.
mongodump --host=10.10.10.59 --port=27017 --authenticationDatabase="admin" -u="barryadmin" -p="testpassword" --db=vehicles --archive | mongorestore --host=10.10.10.58 --port=27018 --archive
Ergebnis:
Sie können den Wiederherstellungsprozess überprüfen, indem Sie die Datenbanken mit dem entfernten Server überprüfen. Dies kann durch Ausführung eines JavaScript-Codes mit dem –eval-Tag erfolgen. Mit dem Admin-Befehl "listDatabases" können Sie alle Datenbanken innerhalb der entfernten MongoDB-Instanz auflisten.
mongo --host=10.10.10.58 --port=27018 --quiet --eval 'printjson(db.adminCommand( { listDatabases: 1 } ))'
Ergebnis:
Mongorestore & Mongodump
Dieses Tutorial bietet tiefgehendes Wissen über das MongoDB mongorestore-Dienstprogramm und wie es verwendet werden kann, um von mongodump erstellte Backups wiederherzustellen. Mongorestore bietet eine bequeme und effiziente Möglichkeit, Datenbank-Backups wiederherzustellen. Die Kombination von mongodump mit mongorestore bietet kleinen Datenbankadministratoren eine vollständige Backup-Strategie.
Verwandte Literatur
MongoDB-Leitfaden
- MongoDB-Überblick: Einstieg mit MongoDB
- Wie man MongoDB auf Ubuntu und Mac installiert
- Erstellung einer Datenbank in MongoDB
- MongoDB Shell Grundbefehle
- MongoDB Compass: Nutzung der Mongo GUI
- MongoDB rollenbasierte Zugriffskontrolle (RBAC) erklärt
- MongoDB-Projektion und Projektionsoperatoren erklärt
- MongoDB-Aggregatfunktionen erklärt
- MongoDB-Sortierung: sort()-Methode & Beispiele
- Verwendung von Push-and-Pull-Operatoren in MongoDB
- Wie man MongoDB $unwind
- 23 Gängige MongoDB-Abfrageoperatoren und deren Verwendung
- MongoDB GeoLocation-Abfragebeispiele
- Einführung in MongoDB-Transaktionen
- MongoDB-Indizes: Top-Indextypen und deren Verwaltung
- Die wichtigsten MongoDB-Befehle, die du kennen solltest
- MongoDB-Replikation: Eine vollständige Einführung
- Wie man einen MongoDB-Cluster einrichtet
- MongoDB Sharding: Konzepte, Beispiele & Tutorials
- MongoDB Atlas: Einrichtung und Nutzung von verwaltetem MongoDB
- Wie man MongoDB als Docker-Container ausführt
- MongoDB-Speichernutzung, Verwaltung und Anforderungen
- Wie man Mongodump für MongoDB-Backups verwendet
- Mongorestore-Beispiele zur Wiederherstellung von MongoDB-Backups
- Wie man PyMongo benutzt
- Wie man Mongoose für MongoDB und NodeJS verwendet
- MongoDB Spickzettel
- MongoDB vs Cassandra: NoSQL-Datenbanken im Vergleich
- PostgreSQL vs MongoDB: Vergleich von Datenbanken
- MySQL vs. MongoDB: Vergleich von Datenbanken
- MongoDB-Zertifizierungen: Eine Einführung
Diese Beiträge sind meine eigenen und spiegeln nicht unbedingt die Position, Strategien oder Meinung von BMC wider.