Percona XtraBackup ist ein Tool für die Hot-Backup-Erstellung von Datenbanken. MySQL.
Während der Erstellung des Backups werden keine Tabellen gesperrt, Ihr System läuft weiterhin ohne Einschränkungen.
XtraBackup 2.4 kann Backups von Tabellen InnoDB, XtraDB und MyISAM auf Servern MySQL 5.11, 5.5, 5.6 und 5.7, sowie auf dem Server Percona für MySQL mit XtraDB.
Um mit MySQL 8.x sollte die Version XtraBackup 8.x verwenden. In diesem Artikel geht es ausschließlich um XtraBackup 2.4.
Der Hauptvorteil XtraBackup ist geeignet sowohl für hochbelastete Server, als auch für Systeme mit geringem Transaktionsaufkommen.
Wenn die Gesamtgröße Ihrer MySQL-Datenbanken erheblich ist (zig Gigabyte), dann wird das Standardtool mysqldump Ihnen nicht ermöglichen, schnell ein Backup zu erstellen, und die Wiederherstellung des Dumps wird viel Zeit in Anspruch nehmen.
Installation von
Installation von XtraBackup aus dem Repository apt Percona.
Führen Sie nacheinander die folgenden Befehle aus:
wget https://repo.percona.com/apt/percona-release_latest.$(lsb_release -sc)_all.deb
sudo dpkg -i percona-release_latest.$(lsb_release -sc)_all.deb
sudo apt-get update
sudo apt-get install percona-xtrabackup-242. Nach der Installation führen Sie den Befehl aus: xtrabackup -v. Daher ist es wichtig sicherzustellen, dass das Tool korrekt auf dem Server funktioniert. Das Ergebnis sollte etwas Ähnliches wie folgt anzeigen:
xtrabackup: erkannte Serverargumente: — datadir=/var/lib/mysql — tmpdir=/tmp — server-id=1 — logbin=/var/log/mysql/mysql-bin.log — innodbbufferpoolsize=16384M — innodbfilepertable=1 — innodbflushmethod=Odirect — innodbflushlogattrxcommit=0xtrabackup Version 2.4.20 basierend auf MySQL-Server 5.7.26 Linux (x8664) (Revisions-ID: c8b4056)

Zugriffsrechte, Berechtigungen und Privilegien
XtraBackup muss in der Lage sein:
Eine Verbindung zu Ihrem MySQL-Server herzustellen.
Zugriffsrechte auf das Verzeichnis datadir.
Beim Erstellen eines Backups Schreibrechte im angegebenen Verzeichnis über den Parameter target-dir zu haben.
Was ist das datadir?
datadir — das Verzeichnis, in dem der Datenbankserver MySQL Daten speichert. Alle Datenbanken und Tabellen sind dort. In den meisten Linux-Distributionen ist dieses Verzeichnis standardmäßig /var/lib/mysql.
Was ist das target-dir Verzeichnis?
target-dir — das Verzeichnis, in dem das Backup gespeichert wird.
Der Datenbankbenutzer benötigt die folgenden Zugriffsrechte auf die zu sichernden Tabellen und Datenbanken:
RELOAD und LOCK TABLES
REPLICATION CLIENT
CREATE TABLESPACE
PROCESS
SUPER
ERSTELLEN
INSERT
SELECT
Konfiguration
Konfiguration XtraBackup dies geschieht durch Optionen, die sich ebenso verhalten wie die Standardparameter von MySQL.
Was bedeutet das?
Die Konfigurationsparameter können entweder in der Befehlszeile oder in der Konfigurationsdatei des DBMS angegeben werden, zum Beispiel in /etc/my.cnf.
Das XtraBackup-Tool liest nach dem Start die Abschnitte [mysqld] und [xtrabackup] aus den MySQL-Konfigurationsdateien. Dies geschieht, damit das Tool die Einstellungen Ihrer DBMS verwenden kann, ohne dass die Parameter bei jedem Backup manuell eingegeben werden müssen.
Beispielsweise wird der Wert datadir und einige Parameter InnoDB von XtraBackup aus der Konfiguration Ihres DBMS entnommen.
Wenn Sie die Parameter, die sich im Abschnitt [mysqld], befinden, für XtraBackup überschreiben möchten, geben Sie diese einfach in der Konfigurationsdatei im Abschnitt [xtrabackup]an. Da sie später gelesen werden, haben sie eine höhere Priorität.
Es ist nicht erforderlich, irgendwelche Parameter in my.cnf. Alle erforderlichen Parameter können in der Befehlszeile angegeben werden. Üblicherweise ist das einzige, was nützlich in dem Abschnitt [xtrabackup] Ihrer my.cnf , zu platzieren, der Parameter target_dir, der standardmäßig das Verzeichnis definiert, in das die Backups gelegt werden. Aber das ist nicht zwingend erforderlich.
Ein Beispiel für die Angabe des Pfades zum Backup-Verzeichnis in my.cnf:
[xtrabackup]
target_dir = /data/backups/mysql/Skript zur Erstellung eines Backups
Um ein Backup zu erstellen, können Sie folgendes Skript verwenden:
#!/bin/bash
# Удаляем данные в каталоге бекапа
rm -rf /mysql/backup
# Cоздаём бекап
xtrabackup --user=xtrabackup
--password=xxxx_SECRET_xxxx
--backup
--target-dir=/mysql/backup
# Выполняем подготовку бекапа для развёртывания
xtrabackup --prepare --target-dir=/mysql/backup
# Создаём архив
tar -zcvf /home/developer/dumps/xtrabackup-all-dbs-"$(date +%F-%H:%M:%S)".gz /mysql/backupWas passiert während der Ausführung des Skripts?
Zuerst löschen wir das Verzeichnis, in dem wir das Backup speichern wollen:
rm -rf /mysql/backup.
Dann, mit dem Tool XtraBackup erstellen wir das Backup und speichern es in /mysql/backup/:
xtrabackup --user=xtrabackup --password=xxxxz1cYf95550Gc6xxxxxxxpE3rB03xxxx --backup --target-dir=/mysql/backupWir haben vorher in MySQL den Benutzer xtrabackup mit den erforderlichen Berechtigungen erstellt. Mit dem Parameter target-dir geben wir das Verzeichnis an, in dem das Backup gespeichert werden soll.
Ein wichtiger Punkt!
Bitte beachten Sie die Zeile des Skripts:
xtrabackup --prepare --target-dir=/mysql/backup
Die Daten im Verzeichnis /mysql/backup sind nicht konsistent, bis sie vorbereitet werden.
Der Grund dafür ist, dass sich während des Kopiervorgangs Änderungen ergeben haben könnten. Der Befehl xtrabackup --prepare --target-dir=/mysql/backup macht die Daten des Backups zeitlich perfekt konsistent.
Die Datenvorbereitung kann auf jedem Rechner durchgeführt werden. Es ist nicht notwendig, dies auf dem Server zu tun, auf dem sich das Quell-DBMS befindet. Sie können das Backup auf den Zielserver kopieren und es dort vorbereiten.
Das Letzte, was wir tun, ist, ein Archiv zu erstellen, in das wir unser Backup legen:
tar -zcvf /home/developer/dumps/xtrabackup-all-dbs-«$(date % F% H% M% S)».gz /mysql/backupWiederherstellung der Sicherung
Bevor Sie mit der Wiederherstellung der Sicherung auf dem Zielserver beginnen, müssen die Daten vorbereitet werden. Wie das geht, erfahren Sie oben.
Der Prozess der Datenwiederherstellung ist sehr einfach. Sie müssen die Sicherung aus dem Archiv extrahieren und die Daten in datadir.
Wie ersetzt man Daten im Datadir?
Betrachten wir zwei Optionen.
Option 1
Verwenden Sie das Tool XtraBackup. Sie müssen die Option angeben —copy-back.
Der folgende Befehl wird die Sicherung nach datadir zum Zielserver verschieben:
xtrabackup --copy-back --target-dir=/mysql/backupOption 2
Es gibt auch eine andere Möglichkeit, ohne das Tool auszukommen. XtraBackup.
Alles, was Sie tun müssen, ist, die Sicherung nach datadirzu kopieren. Sie können dies mit cp oder rsync.
Es ist wichtig zu verstehen, dass der Wiederherstellungsprozess einer Sicherung nur das Ersetzen des Inhalts des Verzeichnisses umfasst. datadir.
Bevor Sie mit der Wiederherstellung der Sicherung auf dem Zielserver beginnen, müssen Sie:
Den MySQL-Server stoppen.
Den Ordner datadir säubern oder dessen Inhalt an einen anderen Ort verschieben. Das Verzeichnis datadir muss unbedingt leer sein.
Nach dem Abschluss des Datenübertrags kann der MySQL-Server in datadir gestart werden.
Verwendete Materialien
.
Quelle: habr.com
