MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Sichern Sie eine MongoDB-Datenbank mit Mongodump

Es gibt mehrere Möglichkeiten, eine Datenbank in MongoDB zu sichern. Eine schnelle Möglichkeit, eine Datenbank zu sichern, ist die Verwendung von mongodump Werkzeug.

mongodump liest Daten aus einer MongoDB-Datenbank und erstellt High-Fidelity-BSON-Dateien, die der mongorestore Dienstprogramm kann verwendet werden, um eine MongoDB-Datenbank wiederherzustellen.

Mit mongodump können Sie eine Sammlung, eine Datenbank oder alle Datenbanken sichern.

Suchen Sie nach MongoDB-Datenbanktools

mongodump ist Teil des MongoDB Database Tools-Pakets. Die MongoDB-Datenbanktools sind eine Reihe von Befehlszeilendienstprogrammen für die Arbeit mit MongoDB.

Möglicherweise verfügen Sie über die MongoDB-Datenbanktools/mongodump Eingerichtet. Versuchen Sie, den folgenden Befehl in Ihrem Terminal oder Ihrer Eingabeaufforderung auszuführen, um dies zu überprüfen:

mongodump --version

Wenn Sie es nicht haben, können Sie die Installationsanweisungen auf der MongoDB-Website verwenden, um es auf Ihrem System zu installieren.

Wo sollen die Befehle ausgeführt werden?

Sie müssen mongodump ausführen Befehle über die Befehlszeile Ihres Systems (z. B. ein neues Terminal- oder Eingabeaufforderungsfenster).

Führen Sie sie nicht vom mongo aus Hülse.

Alle Datenbanken sichern

Um alle Datenbanken und Sammlungen in der lokalen Instanz zu sichern, die auf dem Standardport 27017 ausgeführt wird, verwenden Sie mongodump Befehl ohne Argumente.

mongodump

Das Ausführen des obigen Codes sichert alle Datenbanken in einem Ordner namens dump/ .

Beachten Sie, dass es den local ausschließt und config Datenbanken.

Beachten Sie auch, dass mongodump erfasst nur die Dokumente in der Datenbank. Wenn Sie eine Wiederherstellung durchführen, mongorestore oder mongod müssen die Indizes nach dem Wiederherstellen von Daten neu erstellen.

So sehen die Dateien im dump/ aus Ordner.

tree dump

Ergebnis:

dump
├── PetHotel
│   ├── employees.bson
│   ├── employees.metadata.json
│   ├── owners.bson
│   ├── owners.metadata.json
│   ├── pets.bson
│   ├── pets.metadata.json
│   ├── pettypes.metadata.json
│   ├── players.bson
│   ├── players.metadata.json
│   ├── scores.bson
│   ├── scores.metadata.json
│   ├── students.bson
│   └── students.metadata.json
├── admin
│   ├── system.users.bson
│   ├── system.users.metadata.json
│   ├── system.version.bson
│   └── system.version.metadata.json
└── krankykranes
    ├── employees.bson
    ├── employees.metadata.json
    ├── products.bson
    └── products.metadata.json

Diese Dateien sind offensichtlich spezifisch für meine MongoDB-Installation, die Testdatenbanken enthält. In meinem Fall wurden 3 Datenbanken ausgegeben:PetHotel , admin , und krankykranes .

Sicherung an einem bestimmten Ort

Sie können --out verwenden oder -o um einen Ort anzugeben, an dem die Dateien für die gedumpten Datenbanken abgelegt werden.

Beispiel:

mongodump --out=data/backups/

Oder:

mongodump -o=data/backups/

In diesem Fall wird jeder Datenbankordner direkt in die data/backups/ ausgegeben Ordner (d.h. es gibt kein /dump/ Ordner).

Sichere eine bestimmte Datenbank

Sie können den --db verwenden Parameter, um eine zu sichernde Datenbank anzugeben.

mongodump --db=krankykranes

Dies gibt die krankykranes aus Datenbank zum Standard dump/ Ordner.

Eine bestimmte Sammlung sichern

Sie können --collection verwenden oder -c um eine zu sichernde Sammlung anzugeben.

Beispiel:

mongodump --db=krankykranes --collection=products

Oder:

mongodump --db=krankykranes -c=products

Dies gibt die products aus Abholung zum dump/krankykranes Ordner.

Sammlungen ausgenommen

Sie können auch die --excludeCollection verwenden Parameter, um eine bestimmte Sammlung anzugeben, die von der Sicherung ausgeschlossen werden soll (d. h. nicht in die Sicherung eingeschlossen).

Beispiel:

mongodump --db=PetHotel --excludeCollection=employees

Dadurch werden alle Sammlungen von PetHotel ausgegeben Datenbank mit Ausnahme der employees Sammlung.

Um mehr als eine Sammlung auszuschließen, verwenden Sie eine separate --excludeCollection Parameter für jede Sammlung, die Sie ausschließen möchten.

Beispiel:

mongodump --db=PetHotel --excludeCollection=employees --excludeCollection=students

Davon ausgenommen sind die employees und students Sammlungen aus dem Backup.

Sie können auch --excludeCollectionsWithPrefix verwenden Parameter zum Ausschließen von Sammlungen mit einem bestimmten Präfix.

mongodump --db=PetHotel --excludeCollectionsWithPrefix=p

Dadurch werden alle Sammlungen außer denen ausgegeben, die mit dem Buchstaben p beginnen .

Die folgende schließt alle Sammlungen aus, die mit pet beginnen .

mongodump --db=PetHotel --excludeCollectionsWithPrefix=pet

Sie können mehrere --excludeCollectionsWithPrefix verwenden Argumente zum Ausschließen von Sammlungen mit mehreren Präfixen.

Beispiel:

mongodump --db=PetHotel --excludeCollectionsWithPrefix=p  --excludeCollectionsWithPrefix=s

Ausgabe komprimieren

Sie können den --gzip verwenden Parameter, um die Ausgabe zu komprimieren.

mongodump --gzip --db=krankykranes

Dadurch werden die einzelnen Dateien komprimiert.

tree dump

Ergebnis:

dump
└── krankykranes
    ├── employees.bson.gz
    ├── employees.metadata.json.gz
    ├── products.bson.gz
    └── products.metadata.json.gz

Wir können sehen, dass alle Dateien den .gz haben Erweiterung.

Bei der Ausgabe in eine Archivdatei oder den Standardausgabestream wird die Datei --gzip Option komprimiert die Archivdatei oder die Datenausgabe in den Stream.

Aufrufe in Sammlungen umwandeln

Sie können die --viewsAsCollections verwenden Parameter, um schreibgeschützte Ansichten als Sammlungen zu exportieren.

mongodump --db=PetHotel --viewsAsCollections

Wenn Sie eine Ansicht als Sammlung exportieren, wird mongodump erzeugt eine BSON-Datei, die die Dokumente in der Ansicht enthält. Wenn Sie mongorestore verwenden Um die erstellte BSON-Datei wiederherzustellen, wird die Ansicht als Sammlung wiederhergestellt.

Ohne dieses Argument zu verwenden, mongodump exportiert die Metadaten jeder Ansicht. Wenn Sie die Metadatendatei einer Ansicht in einen mongorestore einschließen Vorgang wird die Ansicht neu erstellt.

Verwenden von --viewsAsCollections lässt auch alle Standardsammlungen weg. Wenn ich den obigen Code ausführe, wird daher mein dump/ Ordnerstruktur sieht so aus:

tree dump

Ergebnis:

dump
└── PetHotel
    ├── pettypes.bson
    └── pettypes.metadata.json

In meinem PetHotel Datenbank habe ich eine Ansicht namens pettypes . Wenn ich dies als Ansicht exportiere, werden nur die Metadaten exportiert. Aber wenn ich es in eine Sammlung umwandle, eine pettypes.bson Datei erstellt, die nicht vorhanden wäre, wenn ich die Ansicht als Ansicht exportiert hätte.

Folgendes passiert, wenn ich diese Ansicht exportiere, ohne sie in eine Sammlung zu konvertieren.

mongodump --db=PetHotel --collection=pettypes

Führen Sie dann den Baumbefehl aus, um die Ordnerstruktur zu erhalten.

tree dump

Ergebnis:

dump
└── PetHotel
    └── pettypes.metadata.json

Wir können also sehen, dass nur die Metadaten für die Ansicht ausgegeben werden.

Leiser Modus

Sie können den --quiet verwenden Parameter, um die Ausgabe in Ihrem Terminal- oder Eingabeaufforderungsfenster zu begrenzen.

mongodump --quiet

Ohne dies zu verwenden, sehen Sie wahrscheinlich eine große Liste von Ansichten, Sammlungen usw., die gesichert werden.

Ausführlicher Modus

Auf der anderen Seite können Sie --verbose verwenden oder -v Parameter erhöhen die Ausgabe in Ihrem Terminal- oder Eingabeaufforderungsfenster.

mongodump --verbose

Sie können die Ausführlichkeit erhöhen, indem Sie das -v wiederholen mehrfach bilden.

Beispiel:

mongodump -vvvv

Das Ausführen auf meinem System hat die Ausführlichkeit erheblich erhöht.

Abfrageergebnisse sichern

Sie können die --query verwenden oder -q Parameter, um das Ergebnis einer Abfrage auszugeben.

Beispiel:

mongodump --db=PetHotel --collection=pets --query='{ "type": "Dog" }'

Schließen Sie dabei die Abfrage in einfache Anführungszeichen ein. Sie können die Felder in doppelte Anführungszeichen setzen.

Archive &Standardausgabe

Sie können das --archive verwenden oder Parameter, um die Ausgabe in eine angegebene Archivdatei oder, wenn die Archivdatei nicht angegeben ist, in die Standardausgabe (stdout ) streamen, sodass Sie zu einem anderen Prozess leiten können.

Beispiel für die Ausgabe in eine Archivdatei:

mongodump --archive=PetHotel.20201230.archive --db=PetHotel

Im nächsten Beispiel schreibe ich in den Standardausgabestream und leite dann an mongorestore :

mongodump --archive --db=PetHotel --collection=pets --query='{ "type": "Dog" }' | mongorestore --archive  --nsFrom='PetHotel.pets' --nsTo='PetHotel.dogs'

Daraus ergibt sich eine neue Sammlung namens dogs im PetHotel erscheinen Datenbank (und die Sammlung enthält nur Dokumente, die einen type haben Feld mit dem Wert dog ).

Zugriffskontrolle

Die vorherigen Beispiele wurden auf dem lokalen Computer unter Verwendung des Standardports durchgeführt. Das bedeutete, dass wir mongodump ausführen konnten ohne Dinge wie --host anzugeben , --port , --username usw.

Hier ist ein Beispiel, das diese Parameter verwendet, um sich als homer zu authentifizieren :

mongodump --host=myhost.example.com --port=37017 --username=homer --authenticationDatabase=admin --out=/backups/mongodump-2020-12-30

Wir hätten auch das --password verwenden können Parameter, aber wir haben es nicht getan. Wenn Sie --user übergeben aber nicht --password , werden Sie nach dem Passwort gefragt.

Weitere Informationen über Mongodump

Der mongodump Utility akzeptiert viele andere nützliche Parameter, und es gibt auch verschiedene Faktoren zu berücksichtigen, wenn es als Teil einer Sicherungs- und Wiederherstellungsstrategie verwendet wird.

Siehe mongodump Dokumentation auf der MongoDB-Website für weitere Informationen.

Andere Optionen

mongodump und mongorestore sind einfache und effiziente Tools zum Sichern und Wiederherstellen kleiner MongoDB-Bereitstellungen, sind jedoch nicht ideal zum Erfassen von Sicherungen größerer Systeme.

Weitere Methoden zum Sichern Ihrer MongoDB-Datenbanken finden Sie unter MongoDB-Sicherungsmethoden auf der MongoDB-Website.