MariaDB Enterprise Backup ist eine Sicherungslösung der MariaDB Corporation mit einer Reihe von Funktionen wie nicht blockierende Sicherungen, vollständige Sicherung, inkrementelle Sicherung, teilweise Sicherung und Point-in-Time-Recovery.
Wir erhalten oft Fragen zu den Unterschieden zwischen MariaDB Backup und den Sicherungsverwaltungsfunktionen von ClusterControl. Darum geht es in diesem Blog.
Backups erstellen vs. verwalten
MariaDB Backup ist ein Fork von Percona XtraBackup und ein Tool zum Erstellen physischer Backups des MariaDB-Servers. Es ermöglicht Ihnen, Dinge wie vollständige, inkrementelle und teilweise Sicherungen durchzuführen. Mit Hilfe von Binärlogs kann man auch Point-in-Time-Recovery durchführen. Laut Dokumentation bietet die „Enterprise“-Version von MariaDB Backup „DDL-Statement-Tracking, wodurch die Sperrzeit während Backups reduziert wird“.
ClusterControl unterstützt MariaDB Backup als Sicherungsmethode für MariaDB. Es bietet eine grafische Benutzeroberfläche, um vollständige Sicherungen, inkrementelle Sicherungen und Teilsicherungen zu planen und die Wiederherstellung von Sicherungsdateien durchzuführen oder auch die Wiederherstellung zu einem bestimmten Zeitpunkt zu automatisieren. Darüber hinaus bietet ClusterControl Funktionen wie Verschlüsselung, Komprimierung, Hochladen in den Cloud-Speicher (Azure, AWS, Google Cloud) und automatische Überprüfung von Backups, um sicherzustellen, dass sie wiederherstellbar sind.
Vollständige Sicherung und Wiederherstellung
Um eine vollständige Sicherung mit MariaDB Enterprise Backup durchzuführen, können Sie mariabackup-Befehlsdienstprogramme verwenden. Nach dem Befehl mariabackup gibt es 4 Parametereingaben. Die Parameter sind:
- Sicherung - Dies wird für die Sicherung der Datenbank mit Mariabackup-Dienstprogrammen verwendet.
- Vorbereiten - Um eine Point-in-Time-konsistente Sicherung zu erstellen, müssen Sie die Sicherung vorbereiten, nachdem die Rohsicherung ausgeführt wurde.
- Zurückkopie - Wird verwendet, um die extrahierte Sicherung im Standarddatenverzeichnis von mysql wiederherzustellen. Es kopiert die Sicherung in das mysql-Verzeichnis, ohne die ursprüngliche Sicherung zu entfernen.
- Zurück - wird verwendet, um die extrahierte Sicherung im MySQL-Datenverzeichnis wiederherzustellen, indem alle Sicherungsverzeichnisse verschoben werden.
Wenn Sie sichern und wiederherstellen möchten, übergeben Sie einfach den obligatorischen Parameter nach dem Befehl mariabackup. Für einen vollständigen Sicherungsbefehl finden Sie unten ein Beispielskript mit MariaDB Backup.
mariabackup --backup --target-dir=/backup/full/ --user=bkpuser --password=p4sswordb4ckup
Es gibt einige Optionen, die Sie definieren müssen, wie z. B. --target-dir, das der Zielspeicherort für Backup-Dateien ist, --user, das für Benutzer mit Anmeldeinformationen für Backups verwendet wird, und --password for das Backup-Passwort für die Anmeldeinformationen.
Damit die Sicherung Point-Int-Time konsistent wird, müssen Sie die Vorbereitung ausführen, nachdem die vollständige Sicherung abgeschlossen ist. Die Datendateien sind nicht konsistent, bis Sie die Vorbereitung ausführen, da die Datendateien beim Ausführen der Sicherung zu unterschiedlichen Zeitpunkten während der Sicherung kopiert wurden.
Um Backup vorbereiten auszuführen:
mariabackup --prepare --target-dir=/backup/full
Nachdem Sie "prepare" ausgeführt haben, wird das Backup für die Wiederherstellung vorbereitet. Sie sehen die Nachricht in der letzten Zeile wie unten, wenn die Vorbereitung erfolgreich war.
InnoDB: Shutdown completed; log sequence number 9553231
Sie können den Wiederherstellungsbefehl mit Copy-Back ausführen. Hier ist das Beispielskript zum Wiederherstellen der Sicherung:
mariabackup --copy-back --target-dir=/backup/full
Sie können das obige Skript in einen Shell-Skriptbefehl einfügen und eine Ausführungsberechtigung erteilen, es im Betriebssystem-Scheduler konfigurieren.
Sichern und Wiederherstellen mit ClusterControl Backup Management ist sehr einfach zu bedienen. ClusterControl unterstützt logisches Backup und physisches Backup. Für logische Sicherungen verwendet ClusterControl mysqldump und für physische Sicherungen Mariabackup full backup und incremental.
Es gibt zwei Möglichkeiten, wie Sie die Sicherung durchführen möchten; Sie können die Sicherung direkt erstellen oder die Sicherung planen.
Sie können auch einige Optionen wie Verschlüsselung, Komprimierung, Thread für paralleles Kopieren aktivieren unten gezeigt:
Das Wiederherstellen der Sicherung ist so einfach, wie die Sicherung erstellt wurde. Sie müssen nur die vollständige Sicherungsdatei auswählen, die Sie wiederherstellen möchten.
Es gibt zwei Möglichkeiten, wie Sie die Sicherung wiederherstellen möchten; Sie können die Sicherung auf den Knoten wiederherstellen, auf denen die Sicherung erstellt wurde, oder Sie können die Sicherung auf einem dedizierten eigenständigen Host wiederherstellen.
Inkrementelle Sicherung und Wiederherstellung
Das Erstellen einer vollständigen Sicherung einer sehr großen Datenbank ist zeitaufwändig und ressourcenintensiv. Die inkrementelle Sicherung wird verwendet, um eine Sicherung der Änderungen durchzuführen, nachdem die letzte vollständige Sicherung erstellt wurde.
Wenn eine inkrementelle Sicherung ausgeführt wird, vergleicht MariaDB Enterprise Backup vorherige vollständige Sicherungen oder inkrementelle Sicherungen, um die letzten Änderungen zu finden.
mariabackup --backup --incremental-basedir=/backup/full --target-dir=/backup/incr --user=bkpuser --password=p4sswordb4ackup
Bevor Sie die inkrementelle Sicherung durchführen, müssen Sie sicherstellen, dass eine vollständige Sicherung vorbereitet wurde. Danach können Sie die inkrementelle Sicherung ausführen und auf die letzte vollständige Sicherung anwenden.
mariabackup --prepare --target-dir=/backup/full --incremental-dir=/backup/incr
Nachdem die inkrementelle Sicherung auf die vollständige Sicherung angewendet wurde, enthält das vollständige Sicherungsverzeichnis nun alle Sicherungsdaten vorbereitet.
Die Wiederherstellung der vorbereiteten vollständigen Sicherung mit allen inkrementellen Änderungen kann erfolgen über:
mariabackup --copy-back --target-dir=/backup/full
Um ein inkrementelles Backup in ClusterControl durchzuführen, können Sie das inkrementelle mariabackup auswählen. Sie müssen das vollständig vorbereitete Backup haben, bevor Sie das inkrementelle Backup durchführen.
ClusterControl findet automatisch die nächste vollständige Sicherung, wenn Sie die inkrementelle Sicherung ausführen. Und zum Wiederherstellen des Backups können Sie das vollständig vorbereitete Backup auswählen und wiederherstellen. Sie werden gefragt, wie Sie die Sicherung wiederherstellen möchten, entweder auf dem Knoten oder dem eigenständigen Host. Es wird die Sicherung einschließlich inkrementeller Änderungen wiederherstellen.
Teilweise Sicherung und Wiederherstellung
Teilsicherung gibt an, welche Datenbank oder Tabelle Sie sichern möchten. Sie können entweder eine Liste der zu sichernden Datenbanken und Tabellen auswählen oder einige Datenbanken und Tabellen von der Sicherung ausschließen. Zu den Optionen gehören:--databases, --databases-exclude, --tables, --tables-exclude
Unten ist ein Beispielskript für die partielle Sicherung der Tabelle card_data.
mariabackup --backup --target-dir=/backup/partial --user=bkpuser --password=p4sswordb4ckup --tables=card_data
Sie müssen noch die vollständige Teilsicherung vorbereiten, um den Zeitpunkt der Sicherung konsistent zu machen, indem Sie den folgenden Befehl ausführen:
mariabackup --prepare --export --target-dir=/backup/partial
Die Durchführung einer teilweisen Wiederherstellung unterscheidet sich stark von der Wiederherstellung einer vollständigen Sicherung und einer inkrementellen Sicherung. Sie müssen die Tabellen und die Datenbank im laufenden MariaDB-Server vorbereiten und dann die Datendateien manuell in das mysql-Datenverzeichnis kopieren.
Zum Beispiel möchten Sie eine Teilwiederherstellung für die Tabelle card_data (nicht partitionierte Tabelle) durchführen.
- Erstellen Sie die leere Tabelle von card_data mit derselben Struktur in der Zieldatenbank
- Führen Sie den DISCARD-Tablespace auf der Tabelle card_data aus.
ALTER TABLE carddb.card_data DISCARD TABLESPACE;
- Kopieren Sie die Datendateien in das MySQL-Datenverzeichnis
cp /backup/partial/carddb/card_data.* /var/lib/mysql/carddb
- Eigentümer von Dateien ändern, die zu mysql werden
chown mysql:mysql /var/lib/mysql/carddb/card_data.*
- Zuletzt importieren Sie den Tablespace:
ALTER TABLE carddb.card_data IMPORT TABLESPACE;
Teilweises Backup in ClusterControl ist wirklich unkompliziert, Sie müssen nur die Option Teilweises Backup aktivieren. Es gibt Ihnen die Möglichkeit, Datenbanken und Tabellen einzuschließen oder auszuschließen, wie unten gezeigt:
Der nächste Teil ähnelt der vollständigen Sicherung und der inkrementellen Sicherung, Sie können Wählen Sie Einstellungen wie Verschlüsselung und Komprimierung.
Das Wiederherstellen der teilweisen Sicherung ist genau dasselbe wie das Wiederherstellen der vollständigen Sicherung. Sie müssen nur die teilweise Sicherung auswählen, und der Rest wird von ClusterControl erledigt.
Point-in-Time-Wiederherstellung
Das Wiederherstellen der vollständigen Sicherung oder der inkrementellen Sicherung gibt Ihnen eine Sicherung ab dem Zeitpunkt, zu dem die Sicherung erstellt wurde, aber es gibt Ihnen keine Daten, die nach der Erstellung der Sicherung kamen. Diese Änderungen würden im Binärlog stehen. Wenn Sie das vorbereitete Backup mit aktiviertem Binlog durchführen, gibt es eine Datei namens xtrabackup_binlog_info. Die Datei enthält eine binäre Protokolldatei und die Position der letzten Sequenznummer.
Sie können die Point-in-Time-Wiederherstellung durchführen, indem Sie die Änderungen in SQL extrahieren, wie nachdem die Wiederherstellung durchgeführt wurde. Sie können mysqlbinlog ausführen, um die spezifische Zeit im Knoten der Quelldatenbank zu extrahieren, und die SQL im Knoten der Ziel-/wiederhergestellten Datenbank anwenden.
Point-in-Time-Recovery (PITR) in ClusterControl kann wie folgt aktiviert werden:
Sie müssen definieren, bis zu welchem Punkt die Wiederherstellung erfolgen soll. Es werden zwei Optionen unterstützt die zeitbasiert oder positionsbasiert sind. Für zeitbasiert müssen Sie nur die genaue Zeit angeben, zu der die Daten wiederhergestellt werden. Für die Positionsbasis müssen Sie den Binlog-Namen und die Position eingeben. Der Rest der Wiederherstellung ist ähnlich.
Fazit
Das war es fürs Erste. Wie wir oben gesehen haben, ist MariaDB Backup ein nettes Tool mit vielen Optionen. ClusterControl bietet eine benutzerfreundliche GUI zur Durchführung der Backup-Prozeduren. Es fügt auch eine Reihe von Funktionen wie Verschlüsselung, Komprimierung, Planung, Aufbewahrungsverwaltung und automatische Backup-Überprüfung hinzu.