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

Sichern Sie Ihre Daten mit ClusterControl

In den letzten vier Beiträgen der Blogserie haben wir die Bereitstellung von Clustering/Replikation (MySQL/Galera, MySQL-Replikation, MongoDB und PostgreSQL), die Verwaltung und Überwachung Ihrer vorhandenen Datenbanken und Cluster, die Leistungsüberwachung und den Zustand behandelt, und im letzten Beitrag, wie Sie Ihr Setup über HAProxy und ProxySQL hochverfügbar machen.

Wie stellen Sie jetzt, da Ihre Datenbanken betriebsbereit und hochverfügbar sind, sicher, dass Sie Sicherungskopien Ihrer Daten haben?

Sie können Backups für mehrere Dinge verwenden:Notfallwiederherstellung, um Produktionsdaten zum Testen gegen die Entwicklung bereitzustellen oder sogar um einen Slave-Knoten bereitzustellen. Dieser letzte Fall wird bereits von ClusterControl abgedeckt. Wenn Sie Ihrem Replikations-Setup einen neuen (Replik-)Knoten hinzufügen, erstellt ClusterControl eine Sicherung/einen Schnappschuss des Master-Knotens und verwendet ihn zum Erstellen der Replik. Es kann auch ein vorhandenes Backup verwenden, um das Replikat bereitzustellen, falls Sie diese zusätzliche Belastung des Masters vermeiden möchten. Nachdem das Backup extrahiert und vorbereitet wurde und die Datenbank läuft, richtet ClusterControl automatisch die Replikation ein.

Eine sofortige Sicherung erstellen

Im Wesentlichen ist das Erstellen eines Backups für Galera, MySQL-Replikation, PostgreSQL und MongoDB gleich. Sie finden den Backup-Bereich unter ClusterControl> Backup und standardmäßig sehen Sie eine Liste der erstellten Backups des Clusters (falls vorhanden). Andernfalls würden Sie einen Platzhalter sehen, um ein Backup zu erstellen:

Von hier aus können Sie auf die Schaltfläche "Backup erstellen" klicken, um ein sofortiges Backup zu erstellen oder ein neues Backup zu planen:

Alle erstellten Backups können auch in die Cloud hochgeladen werden, indem Sie „Backup in die Cloud hochladen“ umschalten, vorausgesetzt, Sie liefern funktionierende Cloud-Anmeldeinformationen. Standardmäßig werden alle Backups, die älter als 31 Tage sind, gelöscht (konfigurierbar über die Backup-Aufbewahrungseinstellungen) oder Sie können wählen, ob Sie sie für immer behalten oder einen benutzerdefinierten Zeitraum festlegen möchten.

"Backup erstellen" und "Backup planen" haben ähnliche Optionen, mit Ausnahme des Planungsteils und der inkrementellen Backup-Optionen für letzteres. Daher werden wir uns die Funktion "Backup erstellen" (auch bekannt als Sofort-Backup) genauer ansehen.

Da all diese verschiedenen Datenbanken unterschiedliche Backup-Tools haben, gibt es offensichtlich einige Unterschiede in den Optionen, die Sie auswählen können. Bei MySQL können Sie beispielsweise zwischen mysqldump und xtrabackup (vollständig und inkrementell) wählen. Für MongoDB unterstützt ClusterControl mongodump und mongodb-consistent-backup (Beta), während PostgreSQL, pg_dump und pg_basebackup unterstützt werden. Wenn Sie Zweifel haben, welche Sie für MySQL wählen sollen, lesen Sie diesen Blog über die Unterschiede und Anwendungsfälle für mysqldump und xtrabackup.

MySQL und Galera sichern

Wie im vorherigen Absatz erwähnt, können Sie MySQL-Backups entweder mit mysqldump oder xtrabackup (vollständig oder inkrementell) erstellen. Im Assistenten „Backup erstellen“ können Sie auswählen, auf welchem ​​Host Sie das Backup ausführen möchten, den Ort, an dem Sie die Backup-Dateien speichern möchten, sowie dessen Verzeichnis und spezifische Schemas (xtrabackup) oder Schemas und Tabellen (mysqldump).

Wenn der Knoten, den Sie sichern, (Produktions-) Datenverkehr empfängt und Sie befürchten, dass die zusätzlichen Festplattenschreibvorgänge störend werden, wird empfohlen, die Sicherungen an den ClusterControl-Host zu senden, indem Sie die Option „Auf Controller speichern“ auswählen. Dadurch wird das Backup veranlasst, die Dateien über das Netzwerk zum ClusterControl-Host zu streamen, und Sie müssen sicherstellen, dass auf diesem Knoten genügend Speicherplatz verfügbar ist und der Streaming-Port auf dem ClusterControl-Host geöffnet ist.

Es gibt auch mehrere andere Optionen, ob Sie die Komprimierung und die Komprimierungsstufe verwenden möchten. Je höher die Komprimierungsstufe ist, desto kleiner wird die Sicherungsgröße. Es erfordert jedoch eine höhere CPU-Auslastung für den Komprimierungs- und Dekomprimierungsprozess.

Wenn Sie xtrabackup als Methode für die Sicherung wählen würden, würde dies zusätzliche Optionen eröffnen:Desynchronisierung, Sicherungssperren, Komprimierung und xtrabackup parallele Threads/gzip. Die Desync-Option ist nur anwendbar, um einen Knoten von einem Galera-Cluster zu desynchronisieren. Sicherungssperren verwenden einen neuen MDL-Sperrtyp, um Aktualisierungen an nicht transaktionalen Tabellen und DDL-Anweisungen für alle Tabellen zu blockieren, was für InnoDB-spezifische Workloads effizienter ist. Wenn Sie Galera Cluster verwenden, wird empfohlen, diese Option zu aktivieren.

Nachdem Sie eine sofortige Sicherung geplant haben, können Sie den Fortschritt des Sicherungsjobs unter Aktivität> Jobs verfolgen :

Nach Abschluss des Vorgangs sollten Sie einen neuen Eintrag in der Sicherungsliste sehen können.

PostgreSQL sichern

Ähnlich wie bei den Sofortsicherungen von MySQL können Sie eine Sicherung Ihrer Postgres-Datenbank ausführen. Bei Postgres-Backups werden zwei Backup-Methoden unterstützt - pg_dumpall oder pg_basebackup. Beachten Sie, dass ClusterControl unabhängig von der gewählten Sicherungsmethode immer eine vollständige Sicherung durchführt.

Wir haben diesen Aspekt in diesen Details unter Become a PostgreSQL DBA – Logical &Physical PostgreSQL Backups behandelt.

MongoDB sichern

Für MongoDB unterstützt ClusterControl den von Percona entwickelten Standard mongodump und mongodb-consistent-backup. Letzteres befindet sich noch in der Beta-Version, die clusterkonsistente Point-in-Time-Backups von MongoDB bereitstellt, die für Sharding-Cluster-Setups geeignet sind. Da der fragmentierte MongoDB-Cluster aus mehreren Replikatsätzen, einem Konfigurationsreplikatsatz und Shard-Servern besteht, ist es sehr schwierig, eine konsistente Sicherung nur mit Mongodump zu erstellen.

Beachten Sie, dass Sie im Assistenten keinen zu sichernden Datenbankknoten auswählen müssen. ClusterControl wählt automatisch das gesündeste sekundäre Replikat als Backup-Knoten aus. Andernfalls wird die primäre ausgewählt. Wenn die Sicherung ausgeführt wird, wird der ausgewählte Sicherungsknoten gesperrt, bis der Sicherungsvorgang abgeschlossen ist.

Planen von Backups

Nachdem wir nun mit dem Erstellen von Sofortsicherungen herumgespielt haben, können wir dies jetzt erweitern, indem wir die Sicherungen planen.

Die Planung ist sehr einfach:Sie können auswählen, an welchen Tagen das Backup erstellt werden soll und zu welcher Uhrzeit es ausgeführt werden soll.

Für xtrabackup gibt es ein zusätzliches Feature:inkrementelle Backups. Bei einer inkrementellen Sicherung werden nur die Daten gesichert, die sich seit der letzten Sicherung geändert haben. Natürlich sind die inkrementellen Backups nutzlos, wenn es kein vollständiges Backup als Ausgangspunkt gäbe. Zwischen zwei vollständigen Backups können Sie beliebig viele inkrementelle Backups erstellen. Ihre Wiederherstellung dauert jedoch länger.

Nach der Planung sollten die Jobs auf der Registerkarte „Geplante Sicherung“ sichtbar werden und Sie können sie bearbeiten, indem Sie auf die Schaltfläche „Bearbeiten“ klicken. Wie bei den Sofortsicherungen planen diese Jobs die Erstellung einer Sicherung und Sie können den Fortschritt über die Registerkarte "Aktivität" verfolgen.

Sicherungsliste

Sie finden die Backup-Liste unter ClusterControl> Backup Dadurch erhalten Sie eine Übersicht auf Clusterebene über alle erstellten Sicherungen. Durch Klicken auf jeden Eintrag wird die Zeile erweitert und weitere Informationen über die Sicherung angezeigt:

Jedes Backup wird von einem Backup-Protokoll begleitet, wenn ClusterControl den Job ausgeführt hat, das unter der Schaltfläche "Weitere Aktionen" verfügbar ist.

Offsite-Backup in der Cloud

Da wir jetzt viele Backups entweder auf den Datenbankhosts oder dem ClusterControl-Host gespeichert haben, wollen wir auch sicherstellen, dass sie nicht verloren gehen, falls wir mit einem vollständigen Infrastrukturausfall konfrontiert werden. (z. B. DC in Brand oder überflutet) Daher ermöglicht Ihnen ClusterControl, Ihre Backups extern in der Cloud zu speichern oder zu kopieren. Die unterstützten Cloud-Plattformen sind Amazon S3, Google Cloud Storage und Azure Cloud Storage.

Der Upload-Vorgang erfolgt direkt nach erfolgreicher Erstellung des Backups (wenn Sie „Backup in die Cloud hochladen“ umschalten) oder Sie können manuell auf die Cloud-Symbol-Schaltfläche der Backup-Liste klicken:

Wählen Sie die Cloud-Anmeldeinformationen und geben Sie den Sicherungsspeicherort entsprechend an:

Sicherung wiederherstellen und/oder überprüfen

Von der Backup-Listenschnittstelle aus können Sie ein Backup direkt auf einem Host im Cluster wiederherstellen, indem Sie auf die Schaltfläche „Wiederherstellen“ für das jeweilige Backup klicken oder auf die Schaltfläche „Backup wiederherstellen“ klicken:

Eine nette Funktion ist, dass es in der Lage ist, einen Knoten oder Cluster mithilfe der vollständigen und inkrementellen Sicherungen wiederherzustellen, da es die letzte vollständige Sicherung verfolgt und die inkrementelle Sicherung von dort aus startet. Dann gruppiert es eine vollständige Sicherung zusammen mit allen inkrementellen Sicherungen bis zur nächsten vollständigen Sicherung. Auf diese Weise können Sie ausgehend von der vollständigen Sicherung wiederherstellen und die inkrementellen Sicherungen darauf anwenden.

ClusterControl unterstützt die Wiederherstellung auf einem vorhandenen Datenbankknoten oder die Wiederherstellung und Überprüfung auf einem neuen eigenständigen Host:

Diese beiden Optionen sind ziemlich ähnlich, außer dass die Überprüfung zusätzliche Optionen für die neuen Hostinformationen hat. Wenn Sie dem Wiederherstellungsassistenten folgen, müssen Sie einen neuen Host angeben. Wenn „Datenbanksoftware installieren“ aktiviert ist, entfernt ClusterControl alle vorhandenen MySQL-Installationen auf dem Zielhost und installiert die Datenbanksoftware mit derselben Version wie der vorhandene MySQL-Server erneut.

Sobald die Sicherung wiederhergestellt und verifiziert ist, erhalten Sie eine Benachrichtigung über den Wiederherstellungsstatus und der Knoten wird automatisch heruntergefahren.

Point-in-Time-Wiederherstellung

Für MySQL können sowohl xtrabackup als auch mysqldump verwendet werden, um eine Point-in-Time-Wiederherstellung durchzuführen und auch einen neuen Replikations-Slave für die Master-Slave-Replikation oder Galera Cluster bereitzustellen. Ein mysqldump PITR-kompatibles Backup enthält eine einzelne Dump-Datei mit GTID-Informationen, Binlog-Datei und Position. Daher ist nur für den Datenbankknoten, der das Binärprotokoll erzeugt, die Option "PITR-kompatibel" verfügbar:

Wenn die Option „PITR-kompatibel“ aktiviert ist, sind die Datenbank- und Tabellenfelder ausgegraut, da ClusterControl immer eine vollständige Sicherung aller Datenbanken, Ereignisse, Trigger und Routinen des Ziel-MySQL-Servers durchführt.

Jetzt das Backup wiederherstellen. Wenn die Sicherung mit PITR kompatibel ist, wird eine Option zur Durchführung einer Point-In-Time-Wiederherstellung angezeigt. Sie haben dafür zwei Optionen – „Zeitbasiert“ und „Positionsbasiert“. Für „Time Based“ können Sie einfach den Tag und die Uhrzeit übergeben. Bei „Positionsbasiert“ können Sie die genaue Position übergeben, an der Sie wiederherstellen möchten. Dies ist eine präzisere Wiederherstellungsmethode, obwohl Sie möglicherweise die binlog-Position mit dem mysqlbinlog-Dienstprogramm abrufen müssen. Weitere Details zur Point-in-Time-Wiederherstellung finden Sie in diesem Blog.

Backup-Verschlüsselung

ClusterControl unterstützt universell die Backup-Verschlüsselung für MySQL, MongoDB und PostgreSQL. Sicherungen werden im Ruhezustand mit dem AES-256-CBC-Algorithmus verschlüsselt. Ein automatisch generierter Schlüssel wird in der Konfigurationsdatei des Clusters unter /etc/cmon.d/cmon_X.cnf gespeichert (wobei X die Cluster-ID ist):

$ sudo grep backup_encryption_key /etc/cmon.d/cmon_1.cnf
backup_encryption_key='JevKc23MUIsiWLf2gJWq/IQ1BssGSM9wdVLb+gRGUv0='

Wenn das Sicherungsziel nicht lokal ist, werden die Sicherungsdateien verschlüsselt übertragen. Diese Funktion ergänzt die Offsite-Sicherung in der Cloud, wo wir keinen vollständigen Zugriff auf das zugrunde liegende Speichersystem haben.

Abschließende Gedanken

Wir haben Ihnen gezeigt, wie Sie Ihre Daten sichern und sicher außerhalb des Standorts aufbewahren können. Genesung ist immer etwas anderes. ClusterControl kann Ihre Datenbanken automatisch aus den in der Vergangenheit erstellten Backups wiederherstellen, die lokal gespeichert oder aus der Cloud zurückkopiert wurden.

Offensichtlich gibt es mehr zur Sicherung Ihrer Daten, insbesondere zur Sicherung Ihrer Verbindungen. Wir werden dies im nächsten Blogbeitrag behandeln!