Mysql
 sql >> Datenbank >  >> RDS >> Mysql

MySQL Cloud-Sicherungs- und Wiederherstellungsszenarien mit Microsoft Azure

Backups sind ein sehr wichtiger Teil Ihres Datenbankbetriebs, da Ihr Unternehmen im Katastrophenfall gesichert sein muss. Wenn dieser Zeitpunkt kommt (und das wird er), sollten Ihr Recovery Point Objective (RPO) und Ihr Recovery Time Objective (RTO) vordefiniert sein, da Sie sich so schnell von dem aufgetretenen Vorfall erholen können.

Die meisten Organisationen variieren ihren Backup-Ansatz und versuchen, eine Kombination aus Server-Image-Backups (Snapshots), logischen und physischen Backups zu haben. Diese Backups werden dann an mehreren Orten gespeichert, um lokale oder regionale Katastrophen zu vermeiden. Dies bedeutet auch, dass die Daten in kürzester Zeit wiederhergestellt werden können, wodurch größere Ausfallzeiten vermieden werden, die sich auf das Geschäft Ihres Unternehmens auswirken können.

Das Hosten Ihrer Datenbank bei einem Cloud-Anbieter wie Microsoft Azure (auf das wir in diesem Blog eingehen werden) ist keine Ausnahme, Sie müssen dennoch Ihre Notfallwiederherstellungsrichtlinie vorbereiten und definieren.

Wie andere öffentliche Cloud-Angebote bietet Microsoft Azure (Azure) einen Ansatz für Sicherungen, der praktisch und kostengünstig ist und darauf ausgelegt ist, Ihnen Wiederherstellungsoptionen bereitzustellen. Microsoft Azure-Sicherungslösungen ermöglichen Ihnen die Konfiguration und den Betrieb und sind einfach über deren Azure Backup oder über den Restore Services Vault zu handhaben (wenn Sie Ihre Datenbank mit virtuellen Maschinen betreiben).

Wenn Sie eine verwaltete Datenbank in der Cloud wünschen, bietet Azure Azure Database for MySQL an. Dies sollte nur verwendet werden, wenn Sie die MySQL-Datenbank nicht selbst betreiben und verwalten möchten. Dieser Service bietet eine umfassende Sicherungslösung, mit der Sie eine Sicherung Ihrer Datenbankinstanz erstellen können, entweder aus einer lokalen Region oder über einen georedundanten Standort. Dies kann für die Datenwiederherstellung nützlich sein. Möglicherweise können Sie sogar einen Knoten aus einem bestimmten Zeitraum wiederherstellen, was nützlich ist, um eine Point-in-Time-Wiederherstellung zu erreichen. Das geht mit nur einem Klick.

In diesem Blog behandeln wir all diese Sicherungs- und Wiederherstellungsszenarien unter Verwendung einer MySQL-Datenbank in der Microsoft Azure-Cloud.

Durchführen von Sicherungen auf einer virtuellen Maschine in Azure

Leider bietet Microsoft Azure keine MySQL-spezifische Sicherungslösung an (z. B. MySQL Enterprise Backup, Percona XtraBackup oder MariaDBs Mariabackup).

Nach der Erstellung Ihrer virtuellen Maschine (unter Verwendung des Portals) können Sie einen Prozess einrichten, um Ihre VM mit dem Tresor der Wiederherstellungsdienste zu sichern. Dies schützt Sie vor Zwischenfällen, Katastrophen oder Katastrophen und die gespeicherten Daten werden standardmäßig verschlüsselt. Das Hinzufügen von Verschlüsselung ist optional und, obwohl es von Azure empfohlen wird, mit einem Preis verbunden. Weitere Einzelheiten finden Sie auf der Seite mit den Azure Backup-Preisen.

Um ein Backup zu erstellen und einzurichten, gehen Sie zum linken Bereich und klicken Sie auf Alle Ressourcen → Compute → Virtuelle Maschine. Stellen Sie nun die erforderlichen Parameter in den Textfeldern ein. Sobald Sie auf dieser Seite sind, gehen Sie zur Registerkarte Verwaltung und scrollen Sie nach unten. Sie können sehen, wie Sie das Backup einrichten oder erstellen können. Siehe Screenshot unten:

Richten Sie dann Ihre Sicherungsrichtlinie basierend auf Ihren Sicherungsanforderungen ein. Klicken Sie einfach auf den Link Neu erstellen im Textfeld Sicherungsrichtlinie, um eine neue Richtlinie zu erstellen. Siehe unten:

Sie können Ihre Sicherungsrichtlinie mit wöchentlicher, monatlicher und jährlicher Aufbewahrung konfigurieren .

Sobald Sie Ihr Backup konfiguriert haben, können Sie überprüfen, ob Sie ein Backup auf dieser bestimmten virtuellen Maschine, die Sie gerade erstellt haben, aktiviert haben. Siehe Screenshot unten:

Ihre virtuelle Maschine auf Azure wiederherstellen und wiederherstellen

Das Entwerfen Ihrer Wiederherstellung in Azure hängt davon ab, welche Art von Richtlinie und Anforderungen Ihre Anwendung erfordert. Es hängt auch davon ab, ob RTO und RPO niedrig oder für den Benutzer im Falle eines Vorfalls oder während der Wartung unsichtbar sein müssen. Sie können Ihre virtuelle Maschine mit einem Verfügbarkeitssatz oder in einer anderen Verfügbarkeitszone einrichten, um eine höhere Wiederherstellungsrate zu erreichen.

Sie können auch eine Notfallwiederherstellung für Ihre VM einrichten, um Ihre virtuellen Maschinen für Geschäftskontinuitäts- und Notfallwiederherstellungsanforderungen in eine andere Azure-Region zu replizieren. Dies ist jedoch möglicherweise keine gute Idee für Ihr Unternehmen, da es mit hohen Kosten verbunden ist. Sofern vorhanden, bietet Azure Ihnen die Möglichkeit, einen virtuellen Computer aus der erstellten Sicherung wiederherzustellen oder zu erstellen.

Zum Beispiel können Sie während der Erstellung Ihrer virtuellen Maschine zur Registerkarte Festplatten und dann zu Datenfestplatten gehen. Sie können eine vorhandene Festplatte erstellen oder anhängen, an die Sie den verfügbaren Snapshot anhängen können. Sehen Sie sich den folgenden Screenshot an, für den Sie zwischen Snapshot und Speicherblob wählen können:

 Sie können auch wie im Screenshot zu einem bestimmten Zeitpunkt wiederherstellen unten:

Die Wiederherstellung in Azure kann auf verschiedene Arten erfolgen, es wird jedoch dieselbe verwendet Ressourcen, die Sie bereits erstellt haben.

Wenn Sie beispielsweise einen Snapshot oder ein Datenträgerabbild erstellt haben, das im Azure Storage-Blob gespeichert ist, können Sie beim Erstellen einer neuen VM diese Ressource verwenden, solange sie kompatibel und verfügbar ist. Darüber hinaus können Sie möglicherweise sogar einige Dateien wiederherstellen, abgesehen von der Wiederherstellung einer VM, wie im folgenden Screenshot:

Während der Dateiwiederherstellung können Sie möglicherweise einen bestimmten Wiederherstellungspunkt auswählen , sowie ein Skript zum Durchsuchen und Wiederherstellen von Dateien herunterladen. Dies ist sehr hilfreich, wenn Sie nur eine bestimmte Datei, aber nicht das gesamte System oder Festplattenvolumen benötigen.

Die Wiederherstellung aus einer Sicherung auf einer vorhandenen VM dauert etwa drei Minuten. Die Wiederherstellung vom Backup zum Erstellen einer neuen VM dauert jedoch zwölf Minuten. Dies kann jedoch von der Größe Ihres virtuellen Computers und der in Azure verfügbaren Netzwerkbandbreite abhängen. Das Gute ist, dass Sie beim Wiederherstellen genau wissen, was abgeschlossen wurde und wie viel Zeit noch verbleibt. Sehen Sie sich zum Beispiel den folgenden Screenshot an:

Sicherungen für Azure Database for MySQL

Azure Database for MySQL ist ein vollständig verwalteter Datenbankdienst von Microsoft Azure. Dieser Service bietet eine sehr flexible und bequeme Möglichkeit, Ihre Sicherungs- und Wiederherstellungsfunktionen einzurichten.

Nach der Erstellung Ihrer MySQL-Serverinstanz können Sie die Backup-Aufbewahrung einrichten und Ihre Backup-Redundanzoptionen erstellen; entweder lokal redundant (lokale Region) oder georedundant (in einer anderen Region). Azure gibt Ihnen die geschätzten Kosten an, die Ihnen für einen Monat in Rechnung gestellt würden. Sehen Sie sich unten einen Beispiel-Screenshot an:

Beachten Sie, dass georedundante Sicherungsoptionen nur für allgemeine Zwecke verfügbar sind und speicheroptimierte Arten von Rechenknoten. Es ist auf einem Basic-Rechenknoten nicht verfügbar, aber Sie können Ihre Redundanz in der lokalen Region haben (d. h. innerhalb der verfügbaren Verfügbarkeitszonen).

Sobald Sie ein Master-Setup haben, ist es einfach, ein Replikat zu erstellen, indem Sie zu Azure Database for MySQL-Servern gehen → Ihre MyQL-Instanz auswählen → Replikation → und auf Replikat hinzufügen klicken. Ihr Replikat kann bei Bedarf als Quelle oder Wiederherstellungsziel verwendet werden.

Beachten Sie, dass das Beenden der Replikation zwischen dem Master und einem Replikat in Azure für immer und unumkehrbar ist, da es das Replikat zu einem eigenständigen Server macht. Ein mit Microsoft Azure erstelltes Replikat ist idealerweise eine verwaltete Instanz, und Sie können die Replikationsthreads genau wie bei einer normalen Master-Slave-Replikation stoppen und starten. Sie können einen Neustart durchführen und das ist alles. Wenn Sie das Replikat manuell erstellt haben, entweder durch Wiederherstellung vom Master oder einem Backup (z. B. über eine Point-in-Time-Wiederherstellung), können Sie die Replikations-Threads stoppen/starten oder bei Bedarf eine Slave-Verzögerung einrichten.

Wiederherstellen Ihrer Azure-Datenbank für MySQL aus einer Sicherung

Die Wiederherstellung ist mit dem Azure-Portal sehr einfach und schnell. Sie können einfach mit Ihrem MySQL-Instanzknoten auf die Schaltfläche „Wiederherstellen“ klicken und einfach der Benutzeroberfläche folgen, wie im folgenden Screenshot gezeigt:

Dann können Sie einen Zeitraum auswählen und eine neue Instanz erstellen/erzeugen basierend auf dieser erfassten Sicherung:

Sobald Sie den Knoten verfügbar haben, ist dieser Knoten keine Kopie von noch der Meister. Sie müssen dies manuell mit einfachen Schritten unter Verwendung der verfügbaren gespeicherten Prozeduren einrichten:

CALL mysql.az_replication_change_master('<master_host>', '<master_user>', '<master_password>', 3306, '<master_log_file>', <master_log_pos>, '<master_ssl_ca>');

wo,

master_host:Hostname des Masterservers

master_user:Benutzername für den Master-Server

master_password:Passwort für den Master-Server

master_log_file:Name der binären Protokolldatei vom Status des laufenden Showmasters

master_log_pos:binäre Log-Position von laufendem Show-Master-Status

master_ssl_ca:Kontext des CA-Zertifikats. Wenn Sie SSL nicht verwenden, übergeben Sie eine leere Zeichenfolge.

Dann starten Sie die MySQL-Threads wie folgt,

CALL mysql.az_replication_start;

oder Sie können die Replikationsthreads wie folgt stoppen,

CALL mysql.az_replication_stop;

oder Sie können den Master entfernen als,

CALL mysql.az_replication_remove_master;

oder SQL-Thread-Fehler überspringen als,

CALL mysql.az_replication_skip_counter;

Wie bereits erwähnt, sind diese spezifischen gespeicherten Prozeduren nicht verfügbar, wenn ein Replikat mit Microsoft Azure unter der Funktion „Replikat hinzufügen“ unter einer MySQL-Instanz erstellt wird. Die Prozedur mysql.az_replication_restart ist jedoch verfügbar, da Sie die Replikationsthreads eines verwalteten Replikats von Azure weder beenden noch starten dürfen. Das obige Beispiel wurde also von einem Master wiederhergestellt, der die vollständige Kopie des Masters übernimmt, aber als einzelner Knoten fungiert und eine manuelle Einrichtung benötigt, um eine Kopie eines vorhandenen Masters zu sein.

Außerdem können Sie, wenn Sie eine manuell eingerichtete Replikation haben, diese nicht unter Azure Database for MySQL-Servern → MyQL-Instanz auswählen → Replikation sehen, da Sie die Replikation manuell erstellt oder eingerichtet haben .

Alternative Cloud- und Wiederherstellungs-Backup-Lösungen

Es gibt bestimmte Szenarien, in denen Sie vollen Zugriff haben möchten, wenn Sie eine vollständige Sicherung Ihrer MySQL-Datenbank in der Cloud erstellen. Dazu können Sie Ihr eigenes Skript erstellen oder Open-Source-Technologien verwenden. Mit diesen können Sie steuern, wie die Daten in Ihrer MySQL-Datenbank gesichert und genau gespeichert werden sollen.

Sie können auch die Azure-Befehlszeilenschnittstelle (CLI) nutzen, um Ihre benutzerdefinierte Automatisierung zu erstellen. Beispielsweise können Sie einen Snapshot mit dem folgenden Befehl mit der Azure CLI erstellen:

az snapshot create  -g myResourceGroup -source "$osDiskId" --name osDisk-backup

oder erstellen Sie Ihr MySQL-Server-Replikat mit dem folgenden Befehl:

az mysql server replica create --name mydemoreplicaserver --source-server mydemoserver --resource-group myresourcegroup

Alternativ können Sie auch ein Enterprise-Tool nutzen, das Möglichkeiten bietet, Ihr Backup mit Wiederherstellungsoptionen zu erstellen. Die Verwendung von Open-Source-Technologien oder Tools von Drittanbietern erfordert Kenntnisse und Fähigkeiten, um Ihre eigene Implementierung zu nutzen und zu erstellen. Hier ist die Liste, die Sie nutzen können:

  • ClusterControl - Obwohl wir vielleicht ein wenig voreingenommen sind, bietet ClusterControl die Möglichkeit, physische und logische Backups Ihrer MySQL-Datenbank mit kampferprobten Open-Source-Technologien (PXB, Mariabackup und mydumper) zu verwalten. Es unterstützt MySQL-, Percona-, MariaDB- und Galera-Datenbanken. Sie können ganz einfach unsere Sicherungsrichtlinie erstellen und Ihre Datenbanksicherungen in jeder Cloud (AWS, GCP oder Azure) speichern. Bitte beachten Sie, dass die kostenlose Version von ClusterControl keine Sicherungsfunktionen enthält.
  • LVM-Snapshots - Sie können LVM verwenden, um einen Snapshot Ihres logischen Volumes zu erstellen. Dies gilt nur für Ihre VM, da sie Zugriff auf Speicher auf Blockebene erfordert. Die Verwendung dieses Tools erfordert eine Einschränkung, da es dazu führen kann, dass Ihr Datenbankknoten nicht mehr reagiert, während die Sicherung ausgeführt wird.
  • Percona XtraBackup (PXB) - Eine Open-Source-Technologie von Percona. Mit PXB können Sie eine physische Sicherungskopie Ihrer MySQL-Datenbank erstellen. Sie können auch ein Hot-Backup mit PXB für die InnoDB-Speicher-Engine durchführen, aber es wird empfohlen, dies auf einem Slave- oder nicht ausgelasteten MySQL-Datenbankserver auszuführen. Dies gilt nur für Ihre VM-Instanz, da sie Binär- oder Dateizugriff auf den Datenbankserver selbst erfordert.
  • Mariabackup - Dasselbe gilt für PXB, es handelt sich um eine Open-Source-Technologie, die von PXB abgezweigt wurde, aber von MariaDB verwaltet wird. Insbesondere wenn Ihre Datenbank MariaDB verwendet, sollten Sie Mariabackup verwenden, um Inkompatibilitätsprobleme mit Tablespaces zu vermeiden.
  • mydumper/myloader - Diese Backup-Tools erstellen logische Sicherungskopien Ihrer MySQL-Datenbank. Sie können dies mit Ihrer Azure-Datenbank für MySQL verwenden, obwohl ich nicht getestet habe, wie erfolgreich dies für Ihr Sicherungs- und Wiederherstellungsverfahren ist.
  • mysqldump - Es ist ein logisches Backup-Tool, das sehr nützlich ist, wenn Sie eine bestimmte Tabelle oder Datenbank auf einer anderen Instanz sichern und sichern (oder wiederherstellen) müssen. Dies wird häufig von DBAs verwendet, aber Sie müssen auf Ihren Festplattenspeicher achten, da logische Sicherungskopien im Vergleich zu physischen Sicherungen riesig sind.
  • MySQL Enterprise-Sicherung - Es liefert heiße, nicht blockierende Online-Backups auf mehreren Plattformen, einschließlich Linux, Windows, Mac und Solaris. Es ist kein kostenloses Backup-Tool, bietet aber viele Funktionen.
  • rsync - Es ist ein schnelles und außerordentlich vielseitiges Werkzeug zum Kopieren von Dateien. Es kann lokal, zu/von einem anderen Host über jede entfernte Shell oder zu/von einem entfernten rsync-Daemon kopieren. Es bietet eine große Anzahl von Optionen, die jeden Aspekt seines Verhaltens steuern und eine sehr flexible Spezifikation der zu kopierenden Dateimenge ermöglichen. Meistens wird rsync in Linux-Systemen als Teil des OS-Pakets installiert.