MariaDB
 sql >> Datenbank >  >> RDS >> MariaDB

Cloud-Backup-Optionen für MySQL- und MariaDB-Datenbanken

Das Hauptziel der Sicherung Ihrer Daten ist natürlich die Möglichkeit, im Falle eines Hardwareausfalls ein Rollback durchzuführen und auf Ihre Archive zuzugreifen. Um heute Geschäfte zu machen, brauchen Sie die Gewissheit, dass Ihre Daten im Katastrophenfall geschützt und zugänglich sind. Sie müssten Ihre Backups extern speichern, falls Ihr Rechenzentrum in Flammen aufgeht.

Datenschutz bleibt eine Herausforderung für kleine und mittelständische Unternehmen. Kleine bis mittelständische Unternehmen ziehen es vor, die Daten ihres Unternehmens mit direkt angeschlossenem Speicher zu archivieren, wobei die Mehrheit der Firmen plant, externe Sicherungskopien zu erstellen. Der lokale Speicheransatz kann zu einem der schwerwiegendsten Dilemmata führen, denen sich moderne Unternehmen gegenübersehen können – Datenverlust im Katastrophenfall.

Bei der Beurteilung, ob eine Offsite-Übertragung einer geschäftskritischen Datenbank zulässig ist, und bei der Auswahl eines geeigneten Anbieters spielen viele Faktoren eine Rolle. Herkömmliche Methoden wie das Schreiben auf Band und der Versand an einen entfernten Standort können ein komplizierter Prozess sein, der spezielle Hardware, angemessen geschultes Personal und Verfahren erfordert, um sicherzustellen, dass Backups regelmäßig erstellt und geschützt werden und dass die darin enthaltenen Informationen auf Integrität überprüft werden. Kleine Unternehmen haben in der Regel kleine IT-Budgets. Oft können sie sich ein sekundäres Rechenzentrum nicht leisten, selbst wenn sie über ein dediziertes Rechenzentrum verfügen. Trotzdem ist es wichtig, eine Kopie Ihrer Sicherungsdateien extern aufzubewahren. Katastrophen wie Hurrikane, Überschwemmungen, Feuer oder Diebstahl können Ihre Server und Speicher zerstören. Die Aufbewahrung gesicherter Daten im separaten Rechenzentrum stellt sicher, dass die Daten sicher sind, unabhängig davon, was in Ihrem primären Rechenzentrum vor sich geht. Cloud-Speicher ist eine großartige Möglichkeit, dieses Problem anzugehen.
Beim Cloud-Backup-Ansatz müssen eine Reihe von Faktoren berücksichtigt werden. Einige der Fragen, die Sie haben, sind:

  • Werden gesicherte Daten im Ruhezustand im externen Rechenzentrum gesichert?
  • Ist die Übertragung zum oder vom externen Rechenzentrum über das öffentliche Internet sicher?
  • Gibt es eine Auswirkung auf RTO (Recovery Time Objective)?
  • Ist der Sicherungs- und Wiederherstellungsprozess für unsere IT-Mitarbeiter einfach genug?
  • Müssen Änderungen an bestehenden Prozessen vorgenommen werden?
  • Werden Backup-Tools von Drittanbietern benötigt?
  • Wie hoch sind die zusätzlichen Kosten in Bezug auf erforderliche Software oder Datenübertragung?
  • Wie hoch sind die Speicherkosten?

Sicherungsfunktionen beim Erstellen einer Sicherung in die Cloud

Wenn sich Ihr MySQL-Server oder Sicherungsziel 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 Sicherungsrichtlinie nachdenken. Es gibt einige verschiedene Möglichkeiten, Datenbanksicherungen für MySQL 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?

Verschlüsselung

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 einen privaten Schlüssel zur Verschlüsselung verwenden, stellen Sie sicher, dass Sie den Schlüssel an einem sicheren Ort aufbewahren. 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 die privaten oder öffentlichen Schlüssel zu generieren.
Um mysqldump-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 mysqldump-Backup:

$ mysqldump --routines --events --triggers --single-transaction db1 | gzip > 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 mysqldump 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 mysqldump kann ein verschlüsseltes Backup erstellt werden, indem der Inhalt beispielsweise an openssl weitergeleitet wird

mysqldump --routines --events --triggers --single-transaction database | 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 database.sql

Percona XtraBackup kann verwendet werden, um lokale oder Streaming-Backups mit der xbstream-Option zu verschlüsseln oder zu entschlüsseln, um den Backups eine weitere Schutzebene hinzuzufügen. Die Verschlüsselung erfolgt mit der libgcrypt-Bibliothek. Sowohl die Option --encrypt-key als auch die Option --encryptkey-file können verwendet werden, um den Verschlüsselungsschlüssel anzugeben. Verschlüsselungsschlüssel können mit Befehlen wie

generiert werden
$ openssl rand -base64 24
$ bWuYY6FxIPp3Vg5EDWAxoXlmEFqxUqz1

Dieser Wert kann dann als Verschlüsselungsschlüssel verwendet werden. Beispiel für den innobackupex-Befehl mit dem --encrypt-key:

$ innobackupex --encrypt=AES256 --encrypt-key=”bWuYY6FxIPp3Vg5EDWAxoXlmEFqxUqz1” /storage/backups/encrypted

Die Ausgabe des obigen OpenSSL-Befehls kann auch in eine Datei umgeleitet und als Schlüsseldatei behandelt werden:

openssl rand -base64 24 > /etc/keys/pxb.key

Verwenden Sie es stattdessen mit der Option --encrypt-key-file:

innobackupex --encrypt=AES256 --encrypt-key-file=/etc/keys/pxb.key /storage/backups/encrypted

Verwenden Sie zum Entschlüsseln einfach die Option --decrypt mit dem entsprechenden --encrypt-key oder --encrypt-key-file:

$ innobackupex --decrypt=AES256 --encrypt-key=”bWuYY6FxIPp3Vg5EDWAxoXlmEFqxUqz1”
/storage/backups/encrypted/2018-11-18_11-10-09/

Weitere Informationen zur MySQL- und MariaDB-Verschlüsselung finden Sie in unserem anderen Blogbeitrag.

Komprimierung

In der Welt der Datenbank-Cloud-Backups ist die Komprimierung einer Ihrer besten Freunde. Es kann nicht nur Speicherplatz sparen, sondern auch die zum Herunterladen/Hochladen von Daten benötigte Zeit erheblich verkürzen.
Es gibt viele verfügbare Komprimierungstools, nämlich gzip, bzip2, zip, rar und 7z.
Normalerweise kann mysqldump die besten Komprimierungsraten haben, da es sich um eine flache Textdatei handelt. Je nach Komprimierungstool und -verhältnis kann ein komprimierter mysqldump bis zu 6-mal kleiner sein als die ursprüngliche Backup-Größe. Um die Sicherung zu komprimieren, können Sie die Ausgabe von mysqldump an ein Komprimierungstool weiterleiten und an eine Zieldatei umleiten. Sie können auch mehrere Dinge überspringen, wie Kommentare, Sperrtabellen-Anweisungen (falls InnoDB), GTID-bereinigte und Trigger überspringen:

mysqldump --single-transaction --skip-comments --skip-triggers --skip-lock-tables --set-gtid-purged OFF --all-databases | gzip > /storage/backups/all-databases.sql.gz

Mit Percona Xtrabackup können Sie den Streaming-Modus (innobackupex) verwenden, der das Backup im speziellen tar- oder xbstream-Format an STDOUT sendet, anstatt Dateien in das Backup-Verzeichnis zu kopieren. Mit einem komprimierten Backup können Sie je nach Datensatz bis zu 50 % der ursprünglichen Backup-Größe einsparen. Hängen Sie die Option --compress an den Sicherungsbefehl an. Durch die Verwendung von xbstream in Streaming-Backups können Sie den Komprimierungsprozess beschleunigen, indem Sie die Option --compress-threads verwenden. Diese Option gibt die Anzahl der Threads an, die von xtrabackup für die parallele Datenkomprimierung erstellt werden. Der Standardwert für diese Option ist 1. Um diese Funktion zu verwenden, fügen Sie die Option zu einer lokalen Sicherung hinzu. Ein Beispiel-Backup mit Komprimierung:

innobackupex --stream=xbstream --compress --compress-threads=4 > /storage/backups/backup.xbstream

Vor dem Anwenden von Protokollen während der Vorbereitungsphase müssen komprimierte Dateien
mit xbstream dekomprimiert werden:
Verwenden Sie dann qpress, um jede Datei mit der Endung .qp in ihrem jeweiligen Verzeichnis zu extrahieren, bevor
sie ausgeführt werden -- apply-log-Befehl zum Vorbereiten der MySQL-Daten.

$ xbstream -x < /storage/backups/backup.xbstream

Netzwerkdurchsatz begrenzen

Eine großartige Option für Cloud-Backups ist die Begrenzung der Netzwerk-Streaming-Bandbreite (Mb/s) bei der Durchführung eines Backups. 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

Im folgenden Beispiel sehen Sie xtrabackup mit parallelem gzip, Verschlüsselung

 /usr/bin/innobackupex --defaults-file=/etc/mysql/my.cnf --galera-info --parallel 4 --stream=xbstream --no-timestamp . | pv -q -L 2m | pigz -9 - | openssl enc -aes-256-cbc -pass file:/var/tmp/cmon-008688-19992-72450efc3b6e9e4f.tmp > /home/ubuntu/backups/BACKUP-3445/backup-full-2018-11-28_213540.xbstream.gz.aes256 ) 2>&1.

Sicherung in die Cloud übertragen

Wenn Ihr Backup jetzt komprimiert und verschlüsselt ist, kann es übertragen werden.

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. Befolgen Sie andernfalls die Anweisungen für Ihre Linux-Distribution von hier aus.

Um die gcloud-Befehlszeilenschnittstelle zu installieren, können Sie das folgende Verfahren befolgen:

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 mit installiertem und authentifiziertem gsutil-Befehlszeilentool einen regionalen Speicher-Bucket namens mysql-backups-storage in Ihrem aktuellen Projekt.

gsutil mb -c regional -l europe-west1 gs://severalnines-storage/
Creating gs://mysql-backups-storage/

Amazon S3

Wenn Sie RDS nicht zum Hosten Ihrer Datenbanken verwenden, ist es sehr wahrscheinlich, dass Sie Ihre eigenen Sicherungen durchführen. 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 verwendet werden, um 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/mysql_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 Zahl 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.sql --name severalnines_backup

Hybridspeicher für MySQL- und MariaDB-Backups

Mit der wachsenden Branche für öffentliche und private Cloud-Speicher haben wir eine neue Kategorie namens Hybridspeicher. Diese Technologie ermöglicht es, die Dateien lokal zu speichern, wobei Änderungen automatisch mit Remote in der Cloud synchronisiert werden. Ein solcher Ansatz ergibt sich aus der Notwendigkeit, aktuelle Backups für eine schnelle Wiederherstellung (geringere RTO) lokal zu speichern, sowie aus Business-Continuity-Zielen.
Der wichtige Aspekt einer effizienten Ressourcennutzung ist die separate 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 Backup-Aufbewahrung aus gesetzlichen Verpflichtungen für verschiedene Branchen (z. B. Telekommunikationsunternehmen, die Verbindungsmetadaten speichern müssen). 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 der Sicherung mit ClusterControl kann jede der Sicherungsmethoden mit einer Reihe von Optionen konfiguriert werden, wie die Sicherung ausgeführt werden soll. Das Wichtigste für den hybriden Cloud-Speicher wäre:

  • Netzwerkdrosselung
  • Verschlüsselung mit eingebauter Schlüsselverwaltung
  • Komprimierung
  • Aufbewahrungsfrist für die lokalen Sicherungen
  • Aufbewahrungszeitraum für die Cloud-Sicherungen
Duale Backup-Aufbewahrung von ClusterControl ClusterControl erweiterte Sicherungsfunktionen für die Cloud, parallele Komprimierung, Netzwerkbandbreitenbegrenzung, Verschlüsselung usw. ...

Schlussfolgerung

Die Cloud hat die Datensicherungsbranche verändert. Aufgrund des erschwinglichen Preises haben kleinere Unternehmen eine Offsite-Lösung, die alle ihre Daten sichert.

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.

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