Erstellen und Verwenden von MongoDB-Backups unter Ubuntu 14.04

Einführung

Heutzutage entscheiden sich viele moderne Webanwendungsentwickler für die Verwendung einer NoSQL-Datenbank in ihren Projekten, und MongoDB ist häufig die erste Wahl. Wenn Sie MongoDB in einem Produktionsszenario verwenden, ist es wichtig, dass Sie regelmäßig Sicherungen erstellen, um Datenverlust zu vermeiden. Zum Glück bietet MongoDB einfache Befehlszeilen-Tools zum Erstellen und Verwenden von Backups. In diesem Tutorial wird die Verwendung dieser Tools erläutert.

Um zu verstehen, wie Sicherungen funktionieren, ohne die vorhandenen Datenbanken zu manipulieren, werden Sie in diesem Lernprogramm durch das Erstellen einer neuen Datenbank und das Hinzufügen einer kleinen Datenmenge geführt. Anschließend erstellen Sie eine Sicherung der Datenbank, löschen die Datenbank und stellen sie mithilfe der Sicherung wieder her.

Voraussetzungen

Um mitzukommen, benötigen Sie:

Schritt 1 - Erstellen einer Beispieldatenbank

Das Erstellen einer Sicherungskopie einer leeren Datenbank ist nicht sehr nützlich. In diesem Schritt erstellen wir eine Beispieldatenbank und fügen ihr einige Daten hinzu.

Die einfachste Möglichkeit, mit einer MongoDB-Instanz zu interagieren, ist die Verwendung der + mongo + - Shell. Öffne es mit dem + mongo + Befehl.

mongo

Wenn Sie die MongoDB-Eingabeaufforderung erhalten haben, erstellen Sie mit dem Hilfsprogramm + use + eine neue Datenbank mit dem Namen * myDatabase *.

use myDatabase

Ausgabe

switched to db myDatabase

Alle Daten in einer MongoDB-Datenbank sollten zu einer Collection gehören. Sie müssen jedoch keine explizite Sammlung erstellen. Wenn Sie die Methode "+ Einfügen +" verwenden, um in eine nicht vorhandene Sammlung zu schreiben, wird die Sammlung automatisch erstellt, bevor die Daten geschrieben werden.

Mit dem folgenden Code können Sie einer Sammlung mit dem Namen * myCollection * mit der Methode + insert + drei kleine Dokumente hinzufügen:

db.myCollection.insert([
   {'name': 'Alice', 'age': 30},
   {'name': 'Bill', 'age': 25},
   {'name': 'Bob', 'age': 35}
]);

Wenn das Einfügen erfolgreich war, wird eine Meldung angezeigt, die folgendermaßen aussieht:

Ausgabe einer erfolgreichen insert () -Operation

BulkWriteResult({
   "writeErrors" : [ ],
   "writeConcernErrors" : [ ],
   "nInserted" : 3,
   "nUpserted" : 0,
   "nMatched" : 0,
   "nModified" : 0,
   "nRemoved" : 0,
   "upserted" : [ ]
})

Schritt 2 - Überprüfen der Größe der Datenbank

Nachdem Sie über eine Datenbank mit Daten verfügen, können Sie eine Sicherungskopie erstellen. Backups sind jedoch sehr umfangreich, wenn Sie über eine große Datenbank verfügen. Um zu vermeiden, dass der Speicherplatz knapp wird und der Server langsamer wird oder abstürzt, sollten Sie die Größe Ihrer Datenbank überprüfen, bevor Sie ein Backup erstellen.

Sie können die Methode "+ stats " verwenden und den Wert des Schlüssels " dataSize +" überprüfen, um die Größe Ihrer Datenbank in Byte zu ermitteln.

db.stats().dataSize;

Für die aktuelle Datenbank ist der Wert von "+ dataSize +" eine kleine Zahl:

Ausgabe von db.stats (). Datasize

592

Beachten Sie, dass der Wert von "+ dataSize +" nur eine grobe Schätzung der Sicherungsgröße ist.

Schritt 3 - Backup erstellen

Um ein Backup zu erstellen, können Sie ein Befehlszeilenprogramm mit dem Namen + mongodump + verwenden. Standardmäßig erstellt + mongodump + eine Sicherung aller in einer MongoDB-Instanz vorhandenen Datenbanken. Um eine Sicherung einer bestimmten Datenbank zu erstellen, müssen Sie die Option "+ -d " verwenden und den Namen der Datenbank angeben. Um ` mongodump ` mitzuteilen, wo die Sicherung gespeichert werden soll, müssen Sie außerdem die Option ` -o +` verwenden und einen Pfad angeben.

Wenn Sie sich noch in der "+ mongo " - Shell befinden, beenden Sie diese, indem Sie " CTRL + D +" drücken.

Geben Sie den folgenden Befehl ein, um eine Sicherung von * myDatabase * zu erstellen und in + ~ / backups / first_backup + zu speichern:

mongodump -d myDatabase -o ~/backups/first_backup

Wenn die Sicherungserstellung erfolgreich war, werden die folgenden Protokollmeldungen angezeigt:

Erfolgreiche Sicherungserstellungsprotokolle

2015-11-24T18:11:58.590-0500  writing myDatabase.myCollection to /home/me/backups/first_backup/myDatabase/myCollection.bson
2015-11-24T18:11:58.591-0500  writing myDatabase.myCollection metadata to /home/me/backups/first_backup/myDatabase/myCollection.metadata.json
2015-11-24T18:11:58.592-0500  done dumping myDatabase.myCollection (3 documents)
2015-11-24T18:11:58.592-0500  writing myDatabase.system.indexes to /home/me/backups/first_backup/myDatabase/system.indexes.bson

Beachten Sie, dass die Sicherung keine einzelne Datei ist. Es ist eigentlich ein Verzeichnis mit der folgenden Struktur:

Verzeichnisstruktur einer MongoDB-Sicherung

first_backup
└── myDatabase
   ├── myCollection.bson
   ├── myCollection.metadata.json
   └── system.indexes.bson

Schritt 4 - Löschen der Datenbank

Zum Testen der erstellten Sicherung können Sie entweder eine MongoDB-Instanz verwenden, die auf einem anderen Server ausgeführt wird, oder die Datenbank auf Ihrem aktuellen Server löschen. In diesem Tutorial machen wir Letzteres.

Öffne die + mongo Shell und verbinde dich mit * Database *.

mongo myDatabase

Löschen Sie die Datenbank mit der Methode + dropDatabase +.

db.dropDatabase();

Wenn der Löschvorgang erfolgreich war, wird die folgende Meldung angezeigt:

Ausgabe von dropDatabase ()

{ "dropped" : "myDatabase", "ok" : 1 }

Sie können jetzt die Methode "+ find +" Ihrer Sammlung verwenden, um festzustellen, ob alle zuvor eingegebenen Daten gelöscht wurden.

db.myCollection.find();

Dieser Befehl wird nicht ausgegeben, da in der Datenbank keine Daten angezeigt werden können.

Schritt 5 - Wiederherstellen der Datenbank

Um eine Datenbank mithilfe eines Backups wiederherzustellen, das mit + mongodump + erstellt wurde, können Sie ein anderes Befehlszeilenprogramm mit dem Namen + mongorestore + verwenden. Bevor Sie es benutzen, verlassen Sie die + mongo + Shell, indem Sie + CTRL + D + drücken.

Die Verwendung von + mongorestore + ist sehr einfach. Es wird lediglich der Pfad des Verzeichnisses benötigt, in dem sich die Sicherung befindet. So können Sie Ihre Datenbank mithilfe der in "+ ~ / backupts / first_backup +" gespeicherten Sicherung wiederherstellen:

mongorestore ~/backups/first_backup/

Bei erfolgreicher Wiederherstellung werden die folgenden Protokollmeldungen angezeigt:

Erfolgreiche Wiederherstellungsprotokolle

2015-11-24T18:27:04.250-0500  building a list of dbs and collections to restore from /home/me/backups/first_backup/ dir
2015-11-24T18:27:04.251-0500  reading metadata file from /home/me/backups/first_backup/myDatabase/myCollection.metadata.json
2015-11-24T18:27:04.252-0500  restoring myDatabase.myCollection from file /home/me/backups/first_backup/myDatabase/myCollection.bson
2015-11-24T18:27:04.309-0500  restoring indexes for collection myDatabase.myCollection from metadata
2015-11-24T18:27:04.310-0500  finished restoring myDatabase.myCollection (3 documents)
2015-11-24T18:27:04.310-0500  done

Um die wiederhergestellten Daten zu untersuchen, öffnen Sie zuerst die '+ mongo'-Shell und stellen Sie eine Verbindung mit' + Database 'her.

mongo myDatabase

Rufen Sie dann die "+ find" -Methode für Ihre "+ collection" auf.

db.myCollection.find();

Wenn alles geklappt hat, sollten Sie jetzt alle Daten sehen können, die Sie zuvor eingegeben haben.

Ausgabe von find ()

{ "_id" : ObjectId("5654e76f21299039c2ba8720"), "name" : "Alice", "age" : 30 }
{ "_id" : ObjectId("5654e76f21299039c2ba8721"), "name" : "Bill", "age" : 25 }
{ "_id" : ObjectId("5654e76f21299039c2ba8722"), "name" : "Bob", "age" : 35 }

Fazit

In diesem Tutorial haben Sie gelernt, wie Sie mit + mongodump + und + mongorestore + eine MongoDB-Datenbank sichern und wiederherstellen. Beachten Sie, dass das Erstellen eines Backups teuer ist und die Leistung Ihrer MongoDB-Instanz beeinträchtigen kann. Daher wird empfohlen, dass Sie Ihre Sicherungen nur außerhalb der Hauptverkehrszeiten erstellen.

Weitere Informationen zu MongoDB-Sicherungsstrategien finden Sie im MongoDB 3.0 manual.