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

Datenbanksicherungen – Vergleich von MariaDB Mariabackup und Percona Xtrabackup

Ihr Datenbankserver speichert 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.

Unabhängig davon, ob es sich um einen rund um die Uhr stark ausgelasteten Server oder eine Umgebung mit geringem Transaktionsvolumen handelt, Sie müssen Sicherungen nahtlos durchführen, ohne die Leistung des Servers in einer Produktionsumgebung zu beeinträchtigen.

In diesem Blog werden wir zwei der am häufigsten verwendeten Tools zur Erfüllung dieser Aufgabe untersuchen, nämlich Percona XtraBackup und Mariabackup. Wir werden die Ähnlichkeiten und Unterschiede zwischen den beiden untersuchen und auch, wie man sie verwendet.

Was ist Percona XtraBackup?

Percona XtraBackup ist ein Open-Source-Tool zur Durchführung von Backups von MariaDB-, MySQL- und Percona Server-Datenbanken. Es führt Online-Non-Blocking (für die unterstützten Engines), eng komprimierte und sichere vollständige Backups auf Transaktionssystemen durch, sodass Anwendungen für die Dauer des Backup-Fensters vollständig verfügbar bleiben.

Mit diesem Tool können Sie:

  • Erstellen Sie heiße InnoDB-Backups, die schnell und zuverlässig abgeschlossen werden, ohne Ihre Datenbank anzuhalten oder den Server zu belasten
  • Inkrementelle Backups erstellen
  • Tabellen online zwischen MySQL-Servern verschieben
  • Erstellen Sie ganz einfach neue MySQL-Replikations-Slaves
  • Komprimierte MySQL-Backups auf einen anderen Server streamen
  • Sparen Sie Speicherplatz und Netzwerkbandbreite

Was ist Mariabackup?

Mariabackup ist ein Open-Source-Tool, das von MariaDB bereitgestellt wird, um physische Online-Backups durchzuführen. Es ist eine Abzweigung von Percona XtraBackup, die für die Arbeit mit verschlüsselten und komprimierten Tabellen entwickelt wurde, und ist die empfohlene Sicherungsmethode für MariaDB-Datenbanken.

MariaDB Server 10.1 führte MariaDB-Komprimierung und Data-at-Rest-Verschlüsselung ein, aber die vorhandenen Sicherungslösungen unterstützten keine vollständige Sicherungsfunktion für diese Funktionen. Daher entschied sich MariaDB, XtraBackup (Version 2.3.8) zu erweitern und nannte diese Lösung Mariabackup.

Unterschiede zwischen Percona XtraBackup und Mariabackup

Wie bereits erwähnt, ist Mariabackup das empfohlene Backup-Tool für MariaDB, und der Hauptunterschied zu XtraBackup besteht darin, dass es mit verschlüsselten und komprimierten Tabellen arbeitet.

Wie auch immer, wenn Sie aus irgendeinem bestimmten Grund XtraBackup für Ihre MariaDB-Datenbank verwenden möchten, müssen Sie abhängig von Ihrer MariaDB-Serverversion einige Punkte berücksichtigen:

  • MariaDB 10.1:Mit unkomprimierten und unverschlüsselten MariaDB-Daten können Sie XtraBackup verwenden. Wenn Verschlüsselung oder Komprimierung verwendet wird oder wenn innodb_page_size auf einen anderen Wert als 16K eingestellt ist, funktioniert es nicht.
  • MariaDB 10.2:Vielleicht möchten Sie auch versuchen, XtraBackup zu verwenden, aber seien Sie sich bewusst, dass die Probleme wahrscheinlich auf den Inkompatibilitätsfehler des MySQL 5.7-Undo-Log-Formats zurückzuführen sind, der in MariaDB 10.2.2 behoben wurde. Aufgrund dieses Fehlers können mit XtraBackup erstellte Sicherungen einige Transaktionen möglicherweise nicht wiederherstellen. Nur wenn Sie den Server mit der Einstellung innodb_undo_logs=1 betreiben, wäre dies kein Problem.
  • MariaDB 10.3 und höher:Dieser Fall ist einfacher. XtraBackup ist nicht kompatibel.

Außerdem sind bei der Verwendung von Mariabackup einige Einschränkungen zu berücksichtigen:

  • MyRocks:Beginnend mit MariaDB 10.2.16 und MariaDB 10.3.8 sichert Mariabackup MyRocks Storage Engine-Daten. Eine teilweise Sicherung von MyRocks-Daten wird derzeit nicht unterstützt. Bei der inkrementellen Sicherung wird eine vollständige Kopie der MyRocks-Daten gespeichert.
  • Dateiexportfunktion:Vor MariaDB 10.2.9 unterstützte Mariabackup die --export-Funktion nicht (es erstellt eine Exportdatei, um Daten aus der Datenbank zu exportieren). Sie können diese Einschränkung umgehen, indem Sie das Backup wie gewohnt vorbereiten (ohne das Flag --export), dann den Server starten und FLUSH TABLES FOR EXPORT ausführen.
  • Protokolldateien:Mariabackup-Versionen bis 10.2.8 erstellen keine leeren Protokolldateien und verlassen sich auf die vom Benutzer ausgeführte Aktion --copy-back (die alte innodb-Protokolldateien löscht, falls vorhanden). Wenn der Benutzer --copy-back nicht verwendet oder sicherstellt, dass das Datenverzeichnis vor der Wiederherstellung leer ist, können die mit diesen Versionen erstellten Sicherungen durchaus inkonsistent/beschädigt werden (aufgrund des Vorhandenseins übrig gebliebener InnoDB-Protokolle).
  • Gcrypt:Die auf dem Sicherungstool basierende Verschlüsselung (gcrypt) wird von Mariabackup nicht unterstützt.
  • Innobackupex-Option:Kein symbolischer Link zu innobackupex (verwenden Sie stattdessen den --innobackupex-Parameter). Das innobackupex-Tool patcht und bietet zusätzliche Funktionen gegenüber dem innobackup-Tool zum Sichern von InnoDB- und MyISAM-Tabellen.
  • Compact-Option:--compact-Option wird nicht unterstützt.
  • Option "Indizes neu erstellen":Die Option --rebuild_indexes wird nicht unterstützt.
  • Tar für Sicherungsdateien:Die Unterstützung für --stream=tar wurde in Mariabackup 10.1.24 entfernt (Die Optionen --streams streamen Sicherungsdateien nach stdout).

Zu guter Letzt kann Mariabackup unter Windows installiert werden.

Sicherungsprozess Wiederherstellungsprozess

Anleitung - Percona XtraBackup und Mariabackup

Mal sehen, wie wir es installieren und verwenden können.

Installation

Sie haben verschiedene Methoden, um sowohl XtraBackup als auch Mariabackup zu installieren. Lassen Sie uns die Installation aus Repositories versuchen.

XtraBackup-Installation

Auf Debian/Ubuntu
$ wget https://repo.percona.com/apt/percona-release_0.1-6.$(lsb_release -sc)_all.deb
$ sudo dpkg -i percona-release_0.1-6.$(lsb_release -sc)_all.deb
$ sudo apt-get update
$ sudo apt-get install percona-xtrabackup-24
Auf RedHat/CentOS
$ sudo yum install http://www.percona.com/downloads/percona-release/redhat/0.1-6/percona-release-0.1-6.noarch.rpm
$ sudo yum install percona-xtrabackup-24

Mariabackup-Installation

Auf Debian / Ubuntu

Mariabackup ist ab MariaDB 10.1.23 Teil von MariaDB Server.

$ sudo apt-get install software-properties-common
$ sudo apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0xF1656F24C74CD1D8
$ sudo add-apt-repository 'deb [arch=amd64,arm64,ppc64el] http://nyc2.mirrors.digitalocean.com/mariadb/repo/10.1/ubuntu bionic main'
$ sudo apt-get update
$ sudo apt-get install mariadb-server-10.1
Auf CentOS / RedHat
$ sudo vi /etc/yum.repos.d/MariaDB.repo
[mariadb]
name=MariaDB
baseurl=http://yum.mariadb.org/10.1/centos7-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1
$ sudo yum install MariaDB-backup

Konfiguration

Sowohl Xtrabackup als auch Mariabackup lesen die Abschnitte [mysqld] und [xtrabackup] jeder MySQL-Konfigurationsdatei in dieser Reihenfolge. Auf diese Weise kann es MySQL-Parameter wie datadir oder InnoDB-Parameter lesen.

Wir können die im Abschnitt [mysqld] enthaltenen Parameter ändern, indem wir ihren Wert in [xtrabackup] ändern, wie wir bereits erwähnt haben, sie werden der Reihe nach gelesen, sodass das Letzte, was wir in [xtrabackup] haben, Vorrang hat.

[mysqld]
datadir=/data/datadir
[xtrabackup]
target_dir=/backups/

Der Benutzer mit den für vollständige Sicherungen erforderlichen Mindestberechtigungen wäre RELOAD, LOCK TABLES, PROCESS und REPLICATION CLIENT:

mysql> CREATE USER 'backupuser'@'localhost' IDENTIFIED BY 'Password';
mysql> GRANT RELOAD, LOCK TABLES, PROCESS, REPLICATION CLIENT ON *.* TO 'backupuser'@'localhost';

Und dann können Sie diesen Benutzer in den MySQL-Konfigurationsdateien hinzufügen:

[xtrabackup]
user=backupuser
password=Password

Außerdem können Sie Xtrabackup oder Mariabackup verwenden, um die Status-Snapshot-Übertragungen durchzuführen, wenn Sie einen Percona XtraDB-Cluster oder MariaDB Galera-Cluster verwenden. Sie müssen die Variablen wsrep_sst_method und wsrep_sst_auth in den Konfigurationsdateien festlegen:

[mysqld]
wsrep_sst_method=xtrabackup-v2
wsrep_sst_auth=backupuser:Password

Oder

[mysqld]
wsrep_sst_method=mariabackup
wsrep_sst_auth=backupuser:Password

Nutzung

Da Mariabackup auf XtraBackup basiert, kann es ähnlich verwendet werden.

Sehen wir uns nun ein Beispiel an, bei dem beide Methoden zum Erstellen, Vorbereiten und Wiederherstellen einer vollständigen Sicherung verwendet werden.

Erstellen einer Sicherung

Um ein neues Backup mit XtraBackup oder Mariabackup zu erstellen, müssen Sie die Optionen --backup und --target-dir zur Befehlszeile hinzufügen:

$ xtrabackup --backup --target-dir=/backups/

Oder

$ mariabackup --backup --target-dir=/backups/

Das Zielverzeichnis, in dem die Sicherung gespeichert wird, kann in den MySQL-Konfigurationsdateien angegeben werden. Der Sicherungsvorgang überschreibt keine vorhandenen Dateien. Wenn die Datei existiert, schlägt die Sicherung fehl.

Transaction log of lsn (9755450) to (9755467) was copied.
181122 23:02:44 completed OK!

Wenn alles geklappt hat, sollte die letzte Zeile, die Sie sehen, "completed OK!" lauten. Sie können die Sicherung jederzeit abbrechen, da sie den Inhalt der Datenbank nicht verändert.

[[email protected] ~]# ls -l /backups/
total 102448
-rw-r----- 1 root root       488 Nov 22 23:02 backup-my.cnf
-rw-r----- 1 root root       482 Nov 22 23:02 ib_buffer_pool
-rw-r----- 1 root root 104857600 Nov 22 23:02 ibdata1
drwxr-x--- 2 root root      4096 Nov 22 23:02 mysql
drwxr-x--- 2 root root      4096 Nov 22 23:02 performance_schema
drwxr-x--- 2 root root      4096 Nov 22 23:02 sakila
drwxr-x--- 2 root root     12288 Nov 22 23:02 sys
-rw-r----- 1 root root        64 Nov 22 23:02 xtrabackup_binlog_info
-rw-r----- 1 root root       113 Nov 22 23:02 xtrabackup_checkpoints
-rw-r----- 1 root root       533 Nov 22 23:02 xtrabackup_info
-rw-r----- 1 root root      2560 Nov 22 23:02 xtrabackup_logfile

Dies sollte der Inhalt Ihres Backups sein. Es kann sich je nach Ihren Datenbanken ändern.

Vorbereiten einer Sicherung

Wenn Sie Ihr Backup mit XtraBackup oder Mariabackup erstellt haben, müssen Sie es für die Wiederherstellung vorbereiten. Datendateien sind erst nach ihrer Vorbereitung konsistent, da sie während der Dauer der Sicherung zu unterschiedlichen Zeitpunkten kopiert wurden. Wenn Sie versuchen, es wiederherzustellen und Ihre Datenbank zu starten, erkennt es eine Beschädigung und stürzt selbst ab, um zu verhindern, dass Sie mit inkonsistenten Daten arbeiten.

Um die Sicherung vorzubereiten, müssen Sie den Befehl xtrabackup oder mariabackup mit der Option --prepare ausführen und das Zielverzeichnis angeben, in dem die Sicherung gespeichert wird.

$ xtrabackup --prepare --target-dir=/backups/

Oder

$ mariabackup --prepare --target-dir=/backups/
InnoDB: Shutdown completed; log sequence number 9757224
181122 23:05:29 completed OK!

Die letzte Zeile, die Sie sehen, sollte "Herunterfahren abgeschlossen; Protokollfolgenummer xxxxxxx" und "abgeschlossen OK!" lauten. wenn alles gut gegangen ist. Es wird nicht empfohlen, den Vorbereitungsprozess abzubrechen, da dies zu einer Beschädigung der Datendatei führen kann und die Sicherung unbrauchbar wird.

Wenn Sie dieses Backup später mit einem inkrementellen Backup verwenden möchten, sollten Sie bei der Vorbereitung die Option --apply-log-only verwenden, sonst können Sie dies nicht tun.

Ein Backup wiederherstellen

Nachdem Sie die Sicherung vorbereitet haben, können Sie die Wiederherstellungsoption mit den Parametern --copy-back oder --move-back verwenden, um die Sicherung in das Datenverzeichnis zu kopieren oder zu verschieben. Wenn Sie nicht genügend Speicherplatz haben, sollten Sie wahrscheinlich die Option zum Verschieben verwenden. Außerdem müssen wir das Zielverzeichnis angeben, in dem die Sicherung gespeichert wird. Denken Sie daran, dass das Datenverzeichnis leer und der Datenbankdienst heruntergefahren sein muss, bevor Sie die Sicherung wiederherstellen.

$ xtrabackup --copy-back --target-dir=/backups/

Oder

$ mariabackup --copy-back --target-dir=/backups/

Zuerst werden die MyISAM-Tabellen und -Indizes kopiert/verschoben, dann die InnoDB-Tabellen und -Indizes und zuletzt die Protokolldateien. Die Dateiattribute werden beim Kopieren beibehalten. Möglicherweise müssen Sie den Besitz der Dateien auf mysql ändern, bevor Sie den Datenbankserver starten, da sie dem Benutzer gehören, der die Sicherung erstellt hat.

$ sudo chown -R mysql:mysql /var/lib/mysql

Es gibt mehrere Parameter, die mit Xtrabackup und Mariabackup verwendet werden können. Sie können diese Parameter hier für XtraBackup und hier für Mariabackup überprüfen.

ClusterControlEine Konsole für Ihre gesamte DatenbankinfrastrukturErfahren Sie, was es sonst noch Neues in ClusterControl gibt. Installieren Sie ClusterControl KOSTENLOS

Verwalten Ihrer Backups auf ClusterControl

Wie wir oben gesehen haben, ist das Ausführen eines Backups keine Raketenwissenschaft. Es kann auch mit cron geplant werden (aber Vorsicht vor stillen Fehlern!). Ein Skript zum regelmäßigen Erstellen von Backups ist jedoch keine Backup-Management-Lösung. Sie benötigen eine Möglichkeit, Berichte über Ihre Backups zu erstellen und bei Fehlern zu warnen. Nun, Backups in Ihrer Umgebung zu konfigurieren und zu sehen, dass die Backups fehlerfrei funktionieren, bedeutet nicht, dass alles gut ist. Sie haben vielleicht schon von Schrödingers Backup gehört, das besagt, dass der Zustand eines Backups unbekannt ist, bis eine Wiederherstellung versucht wird. Denn das Schlimmste, was passieren kann, ist eine Katastrophe, und Sie erkennen, dass die Backups aus irgendeinem Grund falsch sind. Sie versuchen, die gesicherten Dateien wiederherzustellen, und es wird nicht das wiederhergestellt, was Sie Ihrer Meinung nach gesichert haben, oder es wird überhaupt nicht wiederhergestellt! Dann gibt es Dinge wie das Verschieben von Backup-Dateien an einen externen Standort, z. zu externem Cloud-Speicher, für die Notfallwiederherstellung. Verschlüsselung und Umgang mit Schlüsseln sind wichtig für die Sicherheit. Die Aufbewahrung lokaler sowie externer/archivierter Backups muss ebenfalls verwaltet werden.

Mal sehen, wie ClusterControl helfen kann.

Wenn Sie die ClusterControl Backup-Funktion verwenden möchten, gehen Sie zu ClusterControl -> Cluster auswählen -> Backup, und dort können Sie Ihre aktuellen Backups sehen, ein neues erstellen oder planen.

ClusterControl-Sicherungsabschnitt

Mit der Option zum Erstellen oder Planen können wir sowohl die XtraBackup- als auch die Mariabackup-Methode auswählen. Im selben Abschnitt können wir den Server auswählen, von dem das Backup erstellt werden soll, ein teilweises Backup aktivieren, auswählen, wo Sie das Backup speichern möchten und ob Sie das Backup in die Cloud hochladen möchten (AWS, Azure oder Google Cloud).

ClusterControl Sicherung erstellen 1

Dann können wir Sicherungsparameter wie Komprimierung, Verschlüsselung und Aufbewahrung auswählen.

ClusterControl Sicherung erstellen 2

Und dies sollten die Befehle sein, die ClusterControl für Sie ausführt:

[16:37:58]: 192.168.100.120: Launching ( LC_ALL=C /usr/bin/innobackupex --defaults-file=/etc/my.cnf --galera-info --parallel 1 --stream=xbstream --no-timestamp . | gzip -6 - > /root/backups/BACKUP-13/backup-full-2018-11-14_193757.xbstream.gz ) 2>&1.

Oder

[16:29:57]: 192.168.100.131: Launching ( LC_ALL=C /usr/bin/mariabackup --defaults-file=/etc/my.cnf --backup --galera-info --parallel 1 --stream=xbstream --no-timestamp | gzip -6 - > /root/backups/BACKUP-11/backup-full-2018-11-14_192957.xbstream.gz ) 2>&1.

Dieser Befehl kann unterschiedlich sein, je nachdem, welche Parameter Sie gewählt haben.

Wie wir sehen konnten, ist ClusterControl ein guter Freund, wenn wir XtraBackup oder Mariabackup verwenden möchten. Wir können komplexe Sicherungsbefehle auf einfache Weise ausführen, indem wir die Optionen aus der ClusterControl-Benutzeroberfläche auswählen.
ClusterControl unterstützt sowohl vollständige als auch inkrementelle Sicherungen, sodass wir unsere gesamte Sicherungsstrategie über eine benutzerfreundliche Benutzeroberfläche konfigurieren können.

Schlussfolgerung

Beim Sichern eines MariaDB-Servers wird empfohlen, das Mariabackup-Tool zu verwenden. Wenn Sie jedoch aus irgendeinem Grund XtraBackup bevorzugen, können Sie dies dennoch tun. Beachten Sie jedoch die geltenden Einschränkungen, wie wir in diesem Blog festgestellt haben. Und schließlich haben wir besprochen, dass ein Skript zum Sichern einer Datenbank nicht dasselbe ist wie eine Sicherungsverwaltungslösung, und wir haben uns ClusterControl kurz angesehen.

Teilen Sie uns mit, wenn wir Unterschiede zwischen XtraBackup und MariaBackup übersehen haben.

Die nicht blockierenden Backups werden für InnoDB-, XtraDB- und HailDB-Speicher-Engines unterstützt. Die folgenden Speicher-Engines können durch kurzes Anhalten der Schreibvorgänge am Ende des Backups gesichert werden:MyISAM, Merge und Archive, einschließlich partitionierter Tabellen, Trigger und Datenbankoptionen.