Einführung
Regelmäßige Datenbanksicherungen sind ein entscheidender Schritt zum Schutz vor unbeabsichtigten Datenverlustereignissen. Im Allgemeinen gibt es zwei große Kategorien von Sicherungen: Sicherungen auf Dateisystemebene ("physisch") und logische Sicherungen.
Bei Sicherungen auf Dateisystemebene wird zu einem bestimmten Zeitpunkt ein Snapshot der zugrunde liegenden Datendateien erstellt, und die Datenbank kann mithilfe des in den Snapshot-Dateien erfassten Status ordnungsgemäß wiederhergestellt werden. Sie tragen dazu bei, große Datenbanken schnell zu sichern, insbesondere wenn sie zusammen mit Snapshots des Dateisystems wieLVM snapshots oder Snapshots des Blockspeichervolumens wieDigitalOcean Block Storage Snapshots verwendet werden.
Bei logischen Sicherungen wird ein Tool verwendet (z. mongodump
oderpg_dump
) zum Exportieren von Daten aus der Datenbank in Sicherungsdateien, die dann unter Verwendung eines entsprechenden Wiederherstellungstools (z. mongorestore
oderpg_restore
). Sie bieten eine differenzierte Kontrolle darüber, welche Daten gesichert und wiederhergestellt werden sollen, und Sicherungen können häufig auf Datenbankversionen und -installationen übertragen werden. Da logische Sicherungstools alle Daten lesen, die im Speicher gesichert werden, können sie langsam sein und für besonders große Datenbanken eine nicht triviale zusätzliche Last verursachen.
Das Entwerfen einer wirksamen Sicherungs- und Wiederherstellungsstrategie umfasst häufig den Kompromiss zwischen Leistungseinbußen, Implementierungskosten und Datenspeicherkosten mit Wiederherstellungsgeschwindigkeit, Datenintegrität und Sicherungsumfang. Die optimale Lösung hängt von Ihrem Wiederherstellungspunkt und Ihrer Zeit inobjectivesowie von der Skalierung und Architektur der Datenbank ab.
In diesem Handbuch wird gezeigt, wie Sie eine MongoDB-Datenbank mitmongodump
, einem integrierten logischen Sicherungstool, sichern. Anschließend zeigen wir, wie Sie die resultierenden serialisierten Datensicherungsdateien komprimieren und inDigitalOcean Spaces, einen hochredundanten Objektspeicher, hochladen. Wir zeigen auch, wie Sie den Sicherungs- und Upload-Vorgang regelmäßig mit Bash undcron
planen und schließlich mit einem Beispielszenario für die Datenwiederherstellung abschließen.
Am Ende dieses Lernprogramms haben Sie das Framework für eine erweiterbare automatisierte Sicherungsstrategie implementiert, mit der Sie bei Datenverlust in Ihrer Anwendung eine schnelle Wiederherstellung durchführen können. Bei kleineren bis mittelgroßen Datenbanken können Sie mit logischen Sicherungen mitmongodump
genau steuern, welche Daten gesichert und wiederhergestellt werden sollen. Durch die Speicherung dieser komprimierten Backup-Archive in DigitalOcean Spaces wird sichergestellt, dass sie in einem dauerhaften Objektspeicher sofort verfügbar sind, sodass Ihre Anwendungsdaten geschützt sind und im Falle eines Datenverlusts schnell wiederhergestellt werden können.
[.note] #Note: Bei Verwendung des Toolsmongodump
kann es zu Leistungseinbußen kommen, insbesondere bei hoch geladenen Datenbanken. Sie sollten dieses Verfahren zuerst mit einer Nichtproduktionsdatenbank mit simulierter Last testen, um zu überprüfen, ob diese Methode in Ihrer Produktionsbereitstellung funktioniert.
#
Voraussetzungen
Bevor Sie mit diesem Handbuch beginnen, stellen Sie sicher, dass folgende Voraussetzungen erfüllt sind:
-
Ein Ubuntu 16.04-Droplet mit einem Nicht-Root-Benutzer, der über Sudo-Berechtigungen verfügt, wie inInitial Server Setup with Ubuntu 16.04 beschrieben
-
Eine laufende MongoDB 3.2+ -Installation, wie inHow to Install MongoDB on Ubuntu 16.04 beschrieben
-
Ein DigitalOcean Space und eine Reihe von API-Anmeldeinformationen, wie inHow To Create a DigitalOcean Space and API Key angegeben.
-
Der Befehlszeilen-Dateiübertragungsclient (2.X) von
s3cmd
wurde gemäßStep 1 of How To Use Logrotate and S3cmd to Archive Logs to Object Storage on Ubuntu 16.04 installiert -
s3cmd
ist für den Zugriff auf Ihren Space konfiguriert, wie inHow To Configure s3cmd 2.x To Manage DigitalOcean Spaces beschrieben
Sobald Sie sich bei Ihrem Droplet angemeldet, MongoDB aktiviert und Ihren Space erstellt haben, können Sie loslegen.
[[Schritt-1 - Testdaten einfügen]] == Schritt 1 - Testdaten einfügen
Wenn Sie von einer sauberen MongoDB-Installation ausgehen und noch keine Daten gespeichert haben, sollten Sie zunächst einige Beispieldaten zu Testzwecken in die Sammlung eines Dummyrestaurants
einfügen. Wenn Sie bereits einige Sammlungen und Dokumente in Ihrer Datenbank gespeichert haben, können Sie diesen Schritt überspringen und mitStep 2 fortfahren.
Stellen Sie zunächst mit der MongoDB-Shell eine Verbindung zur laufenden Datenbank her:
mongo
Sie sehen die folgende Mongo-Shell-Eingabeaufforderung:
MongoDB shell version: 3.2.19
connecting to: test
Welcome to the MongoDB shell.
For interactive help, type "help".
For more comprehensive documentation, see
http://docs.mongodb.org/
Questions? Try the support group
http://groups.google.com/group/mongodb-user
Server has startup warnings:
2018-04-11T20:30:57.320+0000 I CONTROL [initandlisten]
2018-04-11T20:30:57.320+0000 I CONTROL [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/defrag is 'always'.
2018-04-11T20:30:57.320+0000 I CONTROL [initandlisten] ** We suggest setting it to 'never'
2018-04-11T20:30:57.320+0000 I CONTROL [initandlisten]
>
Standardmäßig stellt die Shell eine Verbindung zur Datenbanktest
her.
Lassen Sie uns die in dertest
-Datenbank vorhandenen Sammlungen auflisten:
show collections
Da wir noch nichts in die Datenbank eingefügt haben, gibt es keine Sammlungen und wir werden ohne Ausgabe zur Eingabeaufforderung zurückgebracht.
Fügen Sie ein Dokument in die Sammlung eines Dummyrestaurants
ein, das automatisch erstellt wird (da es noch nicht vorhanden ist):
db.restaurants.insert({'name': 'Pizzeria Sammy'})
Sie sehen die folgende Ausgabe:
OutputWriteResult({ "nInserted" : 1 })
Dies zeigt an, dass der Einfügevorgang erfolgreich war.
Lassen Sie uns noch einmal Sammlungen auflisten:
show collections
Wir sehen jetzt unsere neu erstellterestaurants
-Sammlung:
Outputrestaurants
Drücken SieCTRL
+D
, um die MongoDB-Shell zu verlassen.
Nachdem wir einige Beispieldaten in der Datenbank gespeichert haben, können wir sie jetzt sichern.
[[Schritt-2 - Verwenden Sie Mongodump, um Mongodb-Daten zu sichern]] == Schritt 2 - Verwenden Siemongodump
, um MongoDB-Daten zu sichern
Wir werden jetzt das integrierte Dienstprogrammmongodump
verwenden, um eine gesamte MongoDB-Datenbank in einer komprimierten Archivdatei zu sichern (oder zu "sichern").
Erstellen wir zunächst ein temporäres Verzeichnis mit dem Namenbackup
, um das vonmongodump
erstellte Archiv zu speichern:
mkdir backup
Sichern wir nun dietest
-Datenbank in dieser MongoDB-Instanz in einer komprimierten Archivdatei mit dem Namentest_dump.gz
. Wenn Ihre Instanz andere Datenbanken enthält, können Sietest
nach dem--db
-Flag durch einen anderen Datenbanknamen ersetzen. Sie können auch das--db
-Flag weglassen, umall-Datenbanken in Ihrer MongoDB-Instanz zu sichern.
[.note] #Note: Der folgende Befehl sollte vom Terminal undnot der Mongo-Shell ausgeführt werden.
#
mongodump --db test --archive=./backup/test_dump.gz --gzip
Hier verwenden wir das Flag--archive
, um anzugeben, dass alle Daten in einer einzelnen Archivdatei (deren Speicherort durch den Parameterarchive
angegeben wird) und--gzip
gespeichert werden sollen Flag, um anzugeben, dass wir diese Datei komprimieren möchten. Darüber hinaus können Sie optional die Flags--collection
oder--query
verwenden, um eine bestimmte Sammlung oder Abfrage zum Archivieren auszuwählen. Weitere Informationen zu diesen Flags finden Sie untermongodump
documentation.
Nach dem Ausführen des Befehls dump wird die folgende Ausgabe angezeigt:
Output2018-04-13T16:29:32.191+0000 writing test.restaurants to archive './backup/test_dump.gz'
2018-04-13T16:29:32.192+0000 done dumping test.restaurants (1 document)
Dies zeigt an, dass unsere Testdaten erfolgreich gespeichert wurden.
Im nächsten Schritt laden wir dieses Sicherungsarchiv in den Objektspeicher hoch.
[[Schritt 3 - Laden des Backup-Archivs in Digitalocean-Spaces hoch]] == Schritt 3 - Laden Sie das Backup-Archiv in DigitalOcean Spaces hoch
Um dieses Archiv in unseren DigitalOcean Space hochzuladen, müssen wir das Tools3cmd
verwenden, das wir inPrerequisitesinstalliert und konfiguriert haben.
Wir werden zuerst die Konfiguration vons3cmd
testen und versuchen, auf unseren Backup-Speicherplatz zuzugreifen. In diesem Tutorial verwenden wirmongo-backup-demo
als Space-Namen. Geben Sie jedoch den tatsächlichen Namen Ihres Space ein:
s3cmd info s3://mongo-backup-demo/
Sie sehen die folgende Ausgabe:
Outputs3://mongo-backup-demo/ (bucket):
Location: nyc3
Payer: BucketOwner
Expiration Rule: none
Policy: none
CORS: none
ACL: 3587522: FULL_CONTROL
Dies zeigt an, dass die Verbindung erfolgreich war unds3cmd
Objekte in den Space übertragen können.
Übertragen wir das in Schritt 2 erstellte Archiv mit dem Befehlput
in unser Space:
s3cmd put ./backup/test_dump.gz s3://mongo-backup-demo/
Es wird eine Ausgabe für die Dateiübertragung angezeigt:
Outputupload: './backup/test_dump.gz' -> 's3://mongo-backup-demo/test_dump.gz' [1 of 1]
297 of 297 100% in 0s 25.28 kB/s done
Sobald die Übertragung abgeschlossen ist, überprüfen wir, ob die Datei erfolgreich in unseren Space übertragen wurde, indem wir den Space-Inhalt auflisten:
s3cmd ls s3://mongo-backup-demo/
Sie sollten die Backup-Archivdatei sehen:
Output2018-04-13 20:39 297 s3://mongo-backup-demo/test_dump.gz
Zu diesem Zeitpunkt haben Sie die MongoDB-Datenbank vontest
erfolgreich gesichert und das Sicherungsarchiv in Ihren DigitalOcean Space übertragen.
Im nächsten Abschnitt erfahren Sie, wie Sie das obige Verfahren mit Bash skripten, damit wir es mitcron
planen können.
[[Schritt-4 - Erstellen und Testen eines Sicherungsskripts]] == Schritt 4 - Erstellen und Testen eines Sicherungsskripts
Nachdem wir unsere MongoDB-Datenbank in einer komprimierten Archivdatei gesichert und diese Datei in unseren Space übertragen haben, können wir diese manuellen Schritte in einem einzigen Bash-Skript kombinieren.
Sicherungsskript erstellen
Wir werden zuerst ein Skript schreiben, das die Befehlemongodump
unds3cmd put
kombiniert, und ein paar zusätzliche Schnickschnack hinzufügen, wie z. B. einige Protokollierungen (unter Verwendung von "Echo").
Öffnen Sie eine leere Datei in Ihrem bevorzugten Texteditor (hier verwenden wirnano
):
nano backup_mongo.sh
Fügen Sie die folgenden Codefragmente ein und achten Sie darauf, die relevanten Werte so zu aktualisieren, dass sie sich auf Ihren eigenen Space-, Datenbank- und Dateinamen beziehen. Wir nennen die Dateibackup_mongo.sh
, aber Sie können diese Datei beliebig benennen. Das vollständige Skript finden Sie auch am Ende dieses Abschnitts.
Lass uns dieses Skript Stück für Stück durchgehen:
backup_mongo.sh
#!/bin/bash
set -e
...
Hier weist#!/bin/bash
die Shell an, das Skript als Bash-Code zu interpretieren. set -e
weist den Interpreter an, sofort zu beenden, wenn einer der Skriptbefehle fehlschlägt.
backup_mongo.sh
...
SPACE_NAME=mongo-backup-demo
BACKUP_NAME=$(date +%y%m%d_%H%M%S).gz
DB=test
...
In diesem Abschnitt legen wir drei Variablen fest, die wir später verwenden werden:
-
SPACE_NAME
: Der Name des DigitalOcean-Bereichs, in den wir unsere Sicherungsdatei hochladen -
BACKUP_NAME
: Der Name des Sicherungsarchivs. Hier setzen wir es auf eine grundlegende Datum-Uhrzeit-Zeichenfolge. -
DB
: Gibt an, welche MongoDB-Datenbank das Skript sichern soll. Wenn Sie die gesamte MongoDB-Instanz (alle Datenbanken) sichern, wird diese Variable nicht verwendet.
backup_mongo.sh
...
date
echo "Backing up MongoDB database to DigitalOcean Space: $SPACE_NAME"
echo "Dumping MongoDB $DB database to compressed archive"
mongodump --db $DB --archive=$HOME/backup/tmp_dump.gz --gzip
echo "Copying compressed archive to DigitalOcean Space: $SPACE_NAME"
s3cmd put $HOME/backup/tmp_dump.gz s3://$SPACE_NAME/$BACKUP_NAME
...
Anschließend drucken wir Datum und Uhrzeit (zu Protokollierungszwecken) und beginnen die Sicherung, indem wir den oben getesteten Befehlmongodump
ausführen. Wir speichern das Backup-Archiv erneut in~/backup/
.
Als nächstes verwenden wirs3cmd
, um dieses Archiv an den Speicherort zu kopieren, der durch diese beiden VariablenSPACE_NAME
undBACKUP_NAME
angegeben wird. Wenn unser Space-Name beispielsweisemongo-backup-demo
lautet und das aktuelle Datum und die aktuelle Uhrzeit2018/04/12 12:42:21
sind, wird die Sicherung180412_124221.gz
genannt und immongo-backup-demo
-Space gespeichert .
backup_mongo.sh
...
echo "Cleaning up compressed archive"
rm $HOME/backup/tmp_dump.gz
echo 'Backup complete!'
Hier entfernen wir das Sicherungsarchiv aus dem Verzeichnis~/backup
, da wir es erfolgreich in unseren Space kopiert haben. Die endgültige Ausgabe zeigt an, dass die Sicherung abgeschlossen ist.
Nach dem Kombinieren all dieser Codefragmente sollte das vollständige Skript folgendermaßen aussehen:
backup_mongo.sh
#!/bin/bash
set -e
SPACE_NAME=mongo-backup-demo
BACKUP_NAME=$(date +%y%m%d_%H%M%S).gz
DB=test
date
echo "Backing up MongoDB database to DigitalOcean Space: $SPACE_NAME"
echo "Dumping MongoDB $DB database to compressed archive"
mongodump --db $DB --archive=$HOME/backup/tmp_dump.gz --gzip
echo "Copying compressed archive to DigitalOcean Space: $SPACE_NAME"
s3cmd put $HOME/backup/tmp_dump.gz s3://$SPACE_NAME/$BACKUP_NAME
echo "Cleaning up compressed archive"
rm $HOME/backup/tmp_dump.gz
echo 'Backup complete!'
Speichern Sie diese Datei, wenn Sie fertig sind.
Als Nächstes testen wir dieses Skript, um zu überprüfen, ob alle Unterbefehle funktionieren.
Backup-Skript testen
Lassen Sie uns schnell das Skriptbackup_mongo.sh
ausführen.
Machen Sie zuerst das Skript ausführbar:
chmod +x backup_mongo.sh
Führen Sie nun das Skript aus:
./backup_mongo.sh
Sie werden die folgende Ausgabe sehen:
OutputMon Apr 16 22:20:26 UTC 2018
Backing up MongoDB database to DigitalOcean Space: mongo-backup-demo
Dumping MongoDB test database to compressed archive
2018-04-16T22:20:26.664+0000 writing test.restaurants to archive '/home/sammy/backup/tmp_dump.gz'
2018-04-16T22:20:26.671+0000 done dumping test.restaurants (1 document)
Copying compressed archive to DigitalOcean Space: mongo-backup-demo
upload: '/home/sammy/backup/tmp_dump.gz' -> 's3://mongo-backup-demo/180416_222026.gz' [1 of 1]
297 of 297 100% in 0s 3.47 kB/s done
Cleaning up compressed archive
Backup complete!
Wir haben erfolgreich ein Backup-Shell-Skript erstellt und können es nun mitcron
planen.
[[Schritt-5 - Planen Sie tägliche Backups mit Cron]] == Schritt 5 - Planen Sie tägliche Backups mit Cron
Um eine nächtliche Ausführung des Sicherungsskripts zu planen, verwenden wircron
, ein Dienstprogramm zur Jobplanung, das in Unix-ähnliche Betriebssysteme integriert ist.
Zunächst erstellen wir ein Verzeichnis zum Speichern der Protokolle für unser Sicherungsskript. Als Nächstes fügen wir das Sicherungsskript zur Konfigurationsdatei von crontab (cron
) hinzu, damitcron
die nächtliche Ausführung plant. Dacron
jede reguläre Häufigkeit unterstützt, können Sie optional wöchentliche oder monatliche Sicherungen planen.
Protokollierungsverzeichnis erstellen
Erstellen wir ein Verzeichnis zum Speichern Ihrer Sicherungsskript-Protokolldateien. Mit diesen Protokollen können wir das Sicherungsskript regelmäßig überprüfen, um sicherzustellen, dass alles in Ordnung ist, und das Debuggen durchführen, falls ein Befehl fehlschlägt.
Erstellen Sie ein Unterverzeichnismongo_backup
in/var/log
(gemäß der für die Protokollierung verwendeten Konvention):
sudo mkdir /var/log/mongo_backup
Machen Sie dieses Verzeichnis nun für unseren Unix-Benutzer beschreibbar. In diesem Fall lautet der Name unseres Benutzerssammy. Sie sollten jedoch den entsprechenden Nicht-Root-Benutzernamen mit Sudo-Berechtigungen für Ihren Server verwenden.
sudo chown sammy:sammy /var/log/mongo_backup
Unser Unix-Benutzersammy kann jetzt in/var/log/mongo_backup
schreiben. Da der Cronjob alssammy ausgeführt wird, kann er jetzt seine Protokolldateien in dieses Verzeichnis schreiben.
Lassen Sie uns den geplanten Cronjob erstellen.
Cronjob erstellen
Um den Cronjob zu erstellen, bearbeiten wir die Datei mit der Liste der geplanten Jobs, die als "Crontab" bezeichnet wird. Beachten Sie, dass es mehrere Crontabs gibt, eine pro Benutzer, und eine systemweite Crontab bei/etc/crontab
. In diesem Tutorial führen wir das Sicherungsskript als Benutzersammyaus. Abhängig von Ihrem Anwendungsfall können Sie ihn auf der systemweiten Crontab ausführen.
Öffnen Sie die Crontab zum Bearbeiten:
crontab -e
Sie sehen das folgende Menü, in dem Sie Ihren bevorzugten Texteditor auswählen können:
Outputno crontab for sammy - using an empty one
Select an editor. To change later, run 'select-editor'.
1. /bin/ed
2. /bin/nano <---- easiest
3. /usr/bin/vim.basic
4. /usr/bin/vim.tiny
Choose 1-4 [2]: no crontab for sammy - using an empty one
Wählen Sie Ihren bevorzugten Editor aus. Umnano
zu wählen, geben Sie2
ein. Fügen Sie nun die folgende Zeile an die Datei an, und folgen Sie dabei dem auskommentierten Abschnitt:
crontab -e
# For more information see the manual pages of crontab(5) and cron(8)
#
# m h dom mon dow command
0 2 * * * /home/sammy/mongo_backup.sh >>/var/log/mongo_backup/mongo_backup.log 2>&1
Stellen Sie sicher, dass Sie am Ende der Crontab einen nachgestellten Zeilenumbruch einfügen. Speichern und schließen Sie die Datei.
Sie sehen die folgende Ausgabe:
Outputno crontab for sammy - using an empty one
crontab: installing new crontab
Das Sicherungsskript wird jetzt jeden Morgen um 2:00 Uhr ausgeführt. Sowohlstdout
als auchstderr
(die Ausgabe- und Fehlerströme) werden weitergeleitet und an eine Protokolldatei mit dem Namenmongo_backup.log
in dem zuvor erstellten Protokollverzeichnis angehängt.
Sie können0 2 * * *
(jede Nacht um 2:00 Uhr in Cron-Syntax ausführen) auf die gewünschte Sicherungshäufigkeit und -zeit ändern. Weitere Informationen zu cron und seiner Syntax finden Sie in unserem Tutorial zuHow To Use Cron To Automate Tasks On A VPS.
Wir schließen dieses Lernprogramm mit einer kurzen Wiederherstellungsübung ab, um sicherzustellen, dass unsere Sicherungen funktionsfähig sind.
[[Schritt-6 - Durchführen einer Testwiederherstellung]] == Schritt 6 - Führen Sie eine Testwiederherstellung durch
Jede Sicherungsstrategie sollte ein Wiederherstellungsverfahren enthalten, das routinemäßig getestet wird. Hier testen wir schnell eine Wiederherstellung aus der komprimierten Sicherungsdatei, die wir in DigitalOcean-Bereiche hochgeladen haben.
Zuerst laden wirtest_dump.gz
von unserem Space in das Home-Verzeichnis in unserem MongoDB-Droplet herunter:
s3cmd get s3://mongo-backup-demo/test_dump.gz
Sie werden die folgende Ausgabe sehen:
Outputdownload: 's3://mongo-backup-demo/test_dump.gz' -> './test_dump.gz' [1 of 1]
297 of 297 100% in 0s 1305.79 B/s done
Wenn Sie dieses Lernprogramm mit einer neuen MongoDB-Instanz begonnen haben, werden Sie sich daran erinnern, dass sie nur dietest
-Datenbank enthielt, die wiederum die einzige Datenbank war, die wir gesichert haben.
Zu Demonstrationszwecken löschen wir jetzt diese Testdatenbank, damit wir eine saubere Wiederherstellung durchführen können. Wenn wir diesen ersten Schritt nicht ausführen, werden beim Wiederherstellen die Originaldokumente gefunden, die übersprungen werden. In Ihrem speziellen Anwendungsfall ist es möglicherweise akzeptabel, nur neue Dokumente wiederherzustellen. Für die Zwecke dieses Lernprogramms möchten wir jedoch eine vollständige Wiederherstellung in einer leeren Datenbank explizit testen.
Stellen Sie mithilfe dermongo
-Shell eine Verbindung zu Ihrer MongoDB-Instanz her:
mongo
Jetzt istuse
dietest
-Datenbank und löscht sie aus der MongoDB-Instanz:
use test
db.dropDatabase()
Die folgende Ausgabe bestätigt den Rückgang vontest
:
Output{ "dropped" : "test", "ok" : 1 }
Beenden Sie nun die Shell vonmongo
und führen Sie den Befehlmongorestore
aus:
mongorestore --gzip --archive=test_dump.gz --db test
Hier geben wir an, dass die Quellensicherungsdatei komprimiert und in Form einer Archivdatei vorliegt (denken Sie daran, dass wir beim Aufrufen vonmongodump
die Flags--archive
und--gzip
verwendet haben) und dass wir dies tun würden möchte in dertest
Datenbank wiederherstellen.
Sie werden die folgende Ausgabe sehen:
Output2018-04-16T23:10:07.317+0000 creating intents for archive
2018-04-16T23:10:07.453+0000 reading metadata for test.restaurants from archive 'test_dump.gz'
2018-04-16T23:10:07.497+0000 restoring test.restaurants from archive 'test_dump.gz'
2018-04-16T23:10:07.541+0000 restoring indexes for collection test.restaurants from metadata
2018-04-16T23:10:07.541+0000 finished restoring test.restaurants (1 document)
2018-04-16T23:10:07.541+0000 done
Dies zeigt an, dass die Wiederherstellung vontest
erfolgreich war.
Lassen Sie uns abschließend bestätigen, dass unsere ursprünglichenrestaurants
-Daten erfolgreich wiederhergestellt wurden.
Öffnen Sie die MongoDB-Shell und fragen Sie dierestaurants
-Sammlung ab:
db.restaurants.find()
Sie sollten das Objekt sehen, das wir im ersten Schritt dieses Tutorials gespeichert haben:
Output{ "_id" : ObjectId("5ace7614dbdf8137afe60025"), "name" : "Pizzeria Sammy" }
Sie haben diese MongoDB-Sicherungsstrategie jetzt erfolgreich implementiert und getestet.
Fazit
In diesem Tutorial haben wir gelernt, wie Sie eine Strategie für nächtliche logische MongoDB-Sicherungen implementieren und testen.
Dieser Leitfaden kann auf viele Arten erweitert oder geändert werden. Hier sind einige schnelle Vorschläge:
-
Abhängig von Ihren Wiederherstellungspunktzielen (RPOs) können Sie die vorgeschlagene Sicherungshäufigkeit erhöhen oder verringern, um sie an Ihr Datenwiederherstellungsfenster anzupassen.
-
Eine weitere hilfreiche Ergänzung wäre eine Warnfunktion, die ausgelöst wird, wenn ein Backup-Skript-Unterbefehl fehlschlägt (z. Diese Funktion kann eine E-Mail an einen regelmäßig überwachten Alert-Posteingang senden.
-
Dieses Skript behandelt das Löschen von Spaces-Objekten nicht. Möglicherweise möchten Sie Backups bereinigen, die älter als etwa 6 Monate sind.
-
Abhängig von Ihrem Anwendungsfall in der Produktion möchten Sie möglicherweise komplexerebackup rotation scheme implementieren.
Da bei der Prozedur vonmongodump
alle gespeicherten Daten schnell durchgelesen werden müssen, eignet sich diese Sicherungsmethode am besten für kleine bis mittlere Datenbanken, insbesondere für Teilsicherungen wie eine bestimmte Sammlung oder Ergebnismenge. Für größere Bereitstellungen werden Sicherungen auf Dateisystemebene empfohlen. Weitere Informationen zu MongoDB-Sicherungen auf Dateisystemebene finden Sie in diesem Lernprogramm zuHow To Back Up MongoDB Using Droplet Snapshots. Weitere Informationen zu verschiedenen Methoden zum Sichern einer MongoDB-Datenbank finden Sie inMongoDB manual.
Die in diesem Lernprogramm vorgestellte Lösung nutztmongodump
für die detaillierte Steuerung der Abdeckung von Sicherungsdaten und DigitalOcean Spaces für eine kostengünstige und dauerhafte Langzeitdatenspeicherung. Weitere Informationen zum Sicherungsdienstprogramm vonmongodump
finden Sie inreference pageim MongoDB-Handbuch. Um mehr über DigitalOcean Spaces zu erfahren, können SieAn Introduction To DigitalOcean Spaces lesen.