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

Tipps zum Speichern von MongoDB-Sicherungen in der Cloud

Wenn es um Backups und Datenarchivierung geht, stehen IT-Abteilungen unter dem Druck, strengere Service-Level-Vereinbarungen einzuhalten, mehr benutzerdefinierte Berichte zu liefern und sich an die wachsenden Compliance-Anforderungen zu halten, während sie weiterhin die täglichen Archivierungs- und Backup-Aufgaben verwalten. Ohne Zweifel speichert der Datenbankserver einige der wertvollsten Informationen Ihres Unternehmens. Die Gewährleistung zuverlässiger Datenbanksicherungen zur Vermeidung von Datenverlusten im Falle eines Unfalls oder Hardwareausfalls ist ein wichtiges Kontrollkästchen.

Aber wie kann man es wirklich DR machen, wenn sich alle Ihre Daten in einem einzigen Rechenzentrum oder sogar in Rechenzentren befinden, die sich in der Nähe der Geolokalisierung befinden? Unabhängig davon, ob es sich um einen rund um die Uhr hochbelasteten Server oder eine Umgebung mit geringem Transaktionsvolumen handelt, müssen Sie Sicherungen nahtlos durchführen, ohne die Leistung des Servers in einer Produktionsumgebung zu beeinträchtigen.

In diesem Blog werden wir die MongoDB-Sicherung in die Cloud überprüfen. Die Cloud hat die Datensicherungsbranche verändert. Aufgrund des erschwinglichen Preises haben kleinere Unternehmen eine Offsite-Lösung, die alle ihre Daten sichert.

Wir zeigen Ihnen, wie Sie sichere MongoDB-Sicherungen mit Mongo-Diensten durchführen, sowie andere Methoden, mit denen Sie Ihre Datenbank-Disaster-Recovery-Optionen erweitern können.

Wenn sich Ihr Server oder Backup-Ziel in einer exponierten Infrastruktur wie einer öffentlichen Cloud, einem Hosting-Provider oder über ein nicht vertrauenswürdiges WAN-Netzwerk befindet, müssen Sie über zusätzliche Maßnahmen in Ihrer Backup-Richtlinie nachdenken. Es gibt verschiedene Möglichkeiten, Datenbanksicherungen für MongoDB durchzuführen, und je nach Art der Sicherung variieren Wiederherstellungszeit, Größe und Infrastrukturoptionen. Da viele der Cloud-Speicherlösungen einfach Speicher mit unterschiedlichen API-Frontends sind, kann jede Backup-Lösung mit ein wenig Skripting durchgeführt werden. Welche Optionen haben wir also, um den Prozess reibungslos und sicher zu gestalten?

MongoDB-Sicherungsverschlüsselung

Sicherheit sollte im Mittelpunkt aller Maßnahmen von IT-Teams stehen. Es ist immer eine gute Idee, eine Verschlüsselung zu erzwingen, um die Sicherheit von Sicherungsdaten zu erhöhen. Ein einfacher Anwendungsfall für die Implementierung der Verschlüsselung ist, wenn Sie die Sicherung in einen externen Sicherungsspeicher in der öffentlichen Cloud verschieben möchten.

Wenn Sie ein verschlüsseltes Backup erstellen, sollten Sie bedenken, dass die Wiederherstellung normalerweise länger dauert. Das Backup muss vor allen Wiederherstellungsaktivitäten entschlüsselt werden. Bei einem großen Datensatz könnte dies zu Verzögerungen bei der RTO führen.

Wenn Sie andererseits die privaten Schlüssel zur Verschlüsselung verwenden, bewahren Sie den Schlüssel an einem sicheren Ort auf. Wenn der private Schlüssel fehlt, ist die Sicherung nutzlos und nicht wiederherstellbar. Wenn der Schlüssel gestohlen wird, sind alle erstellten Backups, die denselben Schlüssel verwenden, gefährdet, da sie nicht mehr gesichert sind. Sie können das beliebte GnuPG oder OpenSSL verwenden, um private oder öffentliche Schlüssel zu generieren.

Um eine MongoDBdump-Verschlüsselung mit GnuPG durchzuführen, generieren Sie einen privaten Schlüssel und folgen Sie dem Assistenten entsprechend:

$ gpg --gen-key

Erstellen Sie wie gewohnt ein einfaches MongoDBdump-Backup:

$ mongodump –db db1 –gzip –archive=/tmp/db1.tar.gz
Verschlüsseln Sie die Dump-Datei und entfernen Sie die ältere einfache Sicherung:
$ gpg --encrypt -r ‘[email protected]’ db1.tar.gz

$ rm -f db1.tar.gz
GnuPG fügt automatisch die Erweiterung .gpg an die verschlüsselte Datei an. Führen Sie zum Entschlüsseln

einfach den gpg-Befehl mit dem Flag --decrypt aus:

$ gpg --output db1.tar.gz --decrypt db1.tar.gz.gpg
Um einen verschlüsselten MongoDBdump mit OpenSSL zu erstellen, muss man einen privaten Schlüssel und einen öffentlichen Schlüssel generieren:
OpenSSL req -x509 -nodes -newkey rsa:2048 -keyout dump.priv.pem -out dump.pub.pem

Dieser private Schlüssel (dump.priv.pem) muss zur späteren Entschlüsselung an einem sicheren Ort aufbewahrt werden. Für Mongodump kann ein verschlüsseltes Backup erstellt werden, indem der Inhalt beispielsweise an openssl weitergeleitet wird

mongodump –db db1 –gzip –archive=/tmp/db1.tar.gz | openssl smime -encrypt -binary -text -aes256

-out database.sql.enc -outform DER dump.pub.pem
Verwenden Sie zum Entschlüsseln einfach den privaten Schlüssel (dump.priv.pem) zusammen mit dem Flag -decrypt:

openssl smime -decrypt -in database.sql.enc -binary -inform

DEM -inkey dump.priv.pem -out db1.tar.gz

MongoDB-Sicherungskomprimierung

In der Welt der Datenbank-Cloud-Sicherung ist die Komprimierung einer Ihrer besten Freunde. Es kann nicht nur Speicherplatz sparen, sondern auch die zum Herunterladen/Hochladen von Daten erforderliche Zeit erheblich verkürzen.

Zusätzlich zur Archivierung haben wir auch Unterstützung für die Komprimierung mit gzip hinzugefügt. Dies wird durch die Einführung einer neuen Befehlszeilenoption „--gzip“ sowohl in Mongodump als auch in Mongorestore offengelegt. Die Komprimierung funktioniert sowohl für Sicherungen, die im Verzeichnis- als auch im Archivmodus erstellt wurden, und reduziert die Speicherplatznutzung.

Normalerweise kann MongoDB-Dump die besten Komprimierungsraten haben, da es sich um eine flache Textdatei handelt. Je nach Komprimierungstool und -verhältnis kann ein komprimierter MongoDBdump bis zu 6-mal kleiner sein als die ursprüngliche Backup-Größe. Um die Sicherung zu komprimieren, können Sie die MongoDBdump-Ausgabe an ein Komprimierungstool weiterleiten und an eine Zieldatei umleiten

Mit einer komprimierten Sicherung können Sie je nach Datensatz bis zu 50 % der ursprünglichen Sicherungsgröße einsparen.

mongodump --db country --gzip --archive=country.archive

Netzwerkdurchsatz begrenzen

Eine großartige Option für Cloud-Sicherungen ist die Begrenzung der Netzwerk-Streaming-Bandbreite (Mb/s) bei der Durchführung einer Sicherung. Das können Sie mit pv tool erreichen. Das pv-Dienstprogramm enthält die Datenmodifikatoroption -L RATE, --rate-limit RATE, die die Übertragung auf ein Maximum von RATE-Bytes pro Sekunde begrenzen. Das folgende Beispiel beschränkt es auf 2 MB/s.

$ pv -q -L 2m

Übertragen von MongoDB-Sicherungen in die Cloud

Wenn Ihr Backup jetzt komprimiert und gesichert (verschlüsselt) ist, ist es bereit für die Übertragung.

Google Cloud

Das gsutil-Befehlszeilentool wird zum Verwalten, Überwachen und Verwenden Ihrer Speicher-Buckets in Google Cloud Storage verwendet. Wenn Sie das gcloud-Dienstprogramm bereits installiert haben, ist gsutil bereits installiert. Folgen Sie andernfalls den Anweisungen für Ihre Linux-Distribution von hier aus.

Um die gcloud-Befehlszeilenschnittstelle zu installieren, gehen Sie wie folgt vor:

curl https://sdk.cloud.google.com | bash
Starten Sie Ihre Shell neu:
exec -l $SHELL
Führen Sie gcloud init aus, um die gcloud-Umgebung zu initialisieren:
gcloud init
Erstellen Sie bei installiertem und authentifiziertem gsutil-Befehlszeilentool einen regionalen Speicher-Bucket namens MongoDB-backups-storage in Ihrem aktuellen Projekt.
gsutil mb -c regional -l europe-west1 gs://severalnines-storage/

Creating gs://MongoDB-backups-storage/

Amazon S3

Wenn Sie RDS nicht zum Hosten Ihrer Datenbanken verwenden, ist es sehr wahrscheinlich, dass Sie Ihre eigenen Backups erstellen. Die AWS-Plattform von Amazon, S3 (Amazon Simple Storage Service), ist ein Datenspeicherdienst, der zum Speichern von Datenbanksicherungen oder anderen geschäftskritischen Dateien verwendet werden kann. Entweder es handelt sich um eine Amazon EC2-Instanz oder Ihre lokale Umgebung, Sie können den Service verwenden, um Ihre Daten zu sichern.

Während Backups über die Webschnittstelle hochgeladen werden können, kann die dedizierte S3-Befehlszeilenschnittstelle dazu verwendet werden, dies über die Befehlszeile und über Backup-Automatisierungsskripte zu tun. Wenn Backups sehr lange aufbewahrt werden sollen und die Wiederherstellungszeit keine Rolle spielt, können Backups an den Amazon Glacier-Service übertragen werden, was eine viel billigere Langzeitspeicherung bietet. Dateien (Amazon-Objekte) werden logischerweise in einem riesigen flachen Container namens Bucket gespeichert. S3 präsentiert eine REST-Schnittstelle zu seinen Interna. Sie können diese API verwenden, um CRUD-Operationen für Buckets und Objekte auszuführen sowie Berechtigungen und Konfigurationen für beide zu ändern.

Die primäre Verteilungsmethode für die AWS CLI unter Linux, Windows und macOS ist pip, ein Paketmanager für Python. Eine Anleitung finden Sie hier.

aws s3 cp severalnines.sql s3://severalnine-sbucket/MongoDB_backups
Standardmäßig bietet S3 elf 9s Objekthaltbarkeit. Wenn Sie also 1.000.000.000 (1 Milliarde) Objekte darin speichern, können Sie davon ausgehen, dass Sie im Durchschnitt alle 10 Jahre 1 Objekt verlieren. Die Art und Weise, wie S3 diese beeindruckende Anzahl von 9 erreicht, besteht darin, das Objekt automatisch in mehreren Availability Zones zu replizieren, worüber wir in einem anderen Beitrag sprechen werden. Amazon verfügt über regionale Rechenzentren auf der ganzen Welt.

Microsoft Azure-Speicher

Die öffentliche Cloud-Plattform von Microsoft, Azure, verfügt über Speicheroptionen mit ihrer Steuerleitungsschnittstelle. Informationen finden Sie hier. Die plattformübergreifende Open-Source-Azure-CLI bietet eine Reihe von Befehlen für die Arbeit mit der Azure-Plattform. Es bietet einen Großteil der Funktionalität, die im Azure-Portal zu sehen ist, einschließlich Rich-Data-Zugriff.

Die Installation von Azure CLI ist ziemlich einfach, eine Anleitung finden Sie hier. Unten erfahren Sie, wie Sie Ihre Sicherung auf den Microsoft-Speicher übertragen.

az storage blob upload --container-name severalnines --file severalnines.gz.tar --name severalnines_backup

Hybridspeicher für MongoDB-Sicherungen

Mit der wachsenden Industrie für öffentliche und private Cloud-Speicher haben wir eine neue Kategorie namens Hybridspeicher. Der typische Ansatz besteht darin, Daten für einen kürzeren Zeitraum auf lokalen Laufwerken aufzubewahren, während Cloud-Backup-Speicher für einen längeren Zeitraum aufbewahrt werden. Oft ergibt sich die Anforderung für eine längere Backup-Aufbewahrung aus gesetzlichen Verpflichtungen für verschiedene Branchen (z. B. müssen Telekommunikationsunternehmen Verbindungsmetadaten speichern). Diese Technologie ermöglicht die lokale Speicherung der Dateien, wobei Änderungen automatisch mit Remote in der Cloud synchronisiert werden. Ein solcher Ansatz ergibt sich aus der Notwendigkeit, aktuelle Sicherungen lokal zu speichern, um eine schnelle Wiederherstellung (niedrigere RTO) sowie Geschäftskontinuitätsziele zu ermöglichen.

Der wichtige Aspekt einer effizienten Ressourcennutzung ist die getrennte Aufbewahrung von Backups. Daten, die lokal auf redundanten Laufwerken gespeichert werden, würden für einen kürzeren Zeitraum aufbewahrt, während Cloud-Backup-Speicher für einen längeren Zeitraum aufbewahrt würden. Oft ergibt sich die Anforderung für eine längere Aufbewahrung von Backups aus gesetzlichen Verpflichtungen für verschiedene Branchen (z. B. müssen Telekommunikationsunternehmen Verbindungsmetadaten speichern).

Cloud-Anbieter wie Google Cloud Services, Microsoft Azure und Amazon S3 bieten jeweils praktisch unbegrenzten Speicherplatz und verringern den lokalen Speicherplatzbedarf. Es ermöglicht Ihnen, Ihre Backup-Dateien länger aufzubewahren, so lange Sie möchten, ohne sich Sorgen um den lokalen Speicherplatz machen zu müssen.

ClusterControl-Sicherungsverwaltung - Hybridspeicher

Beim Planen von Backups mit ClusterControl kann jede der Backup-Methoden mit einer Reihe von Optionen konfiguriert werden, wie das Backup ausgeführt werden soll. Das Wichtigste für den hybriden Cloud-Speicher wäre:

  • Netzwerkdrosselung
  • Verschlüsselung mit der integrierten Schlüsselverwaltung
  • Komprimierung
  • Der Aufbewahrungszeitraum für die lokalen Sicherungen
  • Der Aufbewahrungszeitraum für die Cloud-Sicherungen

ClusterControl erweiterte Sicherungsfunktionen für die Cloud, parallele Komprimierung, Begrenzung der Netzwerkbandbreite, Verschlüsselung usw. Ihr Unternehmen kann die Vorteile der Cloud-Skalierbarkeit und der nutzungsbasierten Preisgestaltung für wachsende Speicheranforderungen nutzen. Sie können eine Backup-Strategie entwerfen, um sowohl lokale Kopien im Rechenzentrum zur sofortigen Wiederherstellung als auch ein nahtloses Gateway zu Cloud-Speicherdiensten von AWS, Google und Azure bereitzustellen.

Erweitertes TLS und AES 256 -Bit-Verschlüsselungs- und Komprimierungsfunktionen unterstützen sichere Backups, die deutlich weniger Speicherplatz in der Cloud beanspruchen.