Mongorestore-Beispiele zur Wiederherstellung von MongoDB-Backups

Mongorestore-Beispiele zur Wiederherstellung von MongoDB-Backups

  • Orchestrierung
6 Minuten Lesezeit Aktualisiert Feb 12, 2025

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:

Mongostore-Verhalten – Fehler bei doppelten Schlüsseln
  • 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:

Mongostore-Syntax

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:

Überprüfen Sie Mongostore. Backup

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:

Mongostore-Beispiel einer entfernten MongoDB-Instanz

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:

Mongostore-Wiederherstellungsbefehl für entfernte MongoDB-Instanz

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.

Mongostore-Befehl für mehrere Namensräume

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:

Definiere eine Archivdatei bei der Wiederherstellung von Daten mit Mongostore

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:

Wiederherstelle ein komprimiertes MongoDB-Backup mit Mongostore

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-Beispiel, wie man Daten aus einem komprimierten Archiv wiederherstellt

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:

Erstellen Sie ein Backup aus einer sicheren MongoDB-Datenbank mit Mongodump

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

Diese Beiträge sind meine eigenen und spiegeln nicht unbedingt die Position, Strategien oder Meinung von BMC wider.

Mehr aus Orchestrierung

Interessieren Sie sich für mehr von BMC?

The Brief ist unsere monatliche E-Mail zum Mainframe und zur Enterprise-Orchestrierung: Recherchen, Kundenberichte, Produktnachrichten, Events.

Mit der Registrierung für dieses Angebot bestätigen Sie, dass Sie die Datenschutzrichtlinie von BMC gelesen und zugestimmt haben.

Sie haben The Brief abonniert

Das Briefing umfasst die Mainframe- und Enterprise-Orchestrierung – BMC AMI und Control-M – sowie die Analystenforschung, Kundeneinsätze und Events in beiden Bereichen.