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:
-
Ein 64-Bit-Ubuntu 14.04-Droplet mit einem sudo non-root user
-
MongoDB 3.0.7 ist auf Ihrem Server installiert. Dies können Sie tun, indem Sie this MongoDB installation guide folgen.
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.