Percona XtraBackup ist ein Tool für Hot-Backup von Datenbanken MySQL.
Während der Erstellung einer Datensicherung findet keine Blockierung der Tabellen statt, Ihr System läuft weiterhin ohne Einschränkungen.
XtraBackup 2.4 kann Backups von Tabellen erstellen InnoDB, XtraDB und MyISAM auf Servern MySQL 5.11, 5.5, 5.6 und 5.7, sowie auf Servern Percona für MySQL c XtraDB.
Für die Nutzung von MySQL 8.x sollte die Version XtraBackup 8.x. In diesem Artikel geht es ausschließlich um XtraBackup 2.4.
Der Hauptvorteil XtraBackup besteht darin, dass dieses Tool sowohl für Backups von stark beanspruchten Server, als auch von Systemen mit niedrigen Transaktionszahlen geeignet ist.
Wenn die Gesamtgröße Ihrer MySQL-Datenbanken beträchtlich ist (zehntausende Gigabyte), dann erlaubt das Standardwerkzeug mysqldump nicht, schnell ein Backup zu erstellen, und die Wiederherstellung des Dumps wird viel Zeit in Anspruch nehmen.
Installation
Installation XtraBackup aus dem Repository apt Percona.
Führen Sie nacheinander folgende 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. Es ist wichtig sicherzustellen, dass das Tool korrekt auf dem Server funktioniert. Das Ergebnis auf dem Bildschirm sollte etwa so aussehen:
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) (Revision ID: c8b4056)

Zugriffsrechte, Berechtigungen und Privilegien
XtraBackup muss in der Lage sein:
Eine Verbindung zu Ihrem MySQL-Server herzustellen.
Über die Zugriffsrechte auf das Verzeichnis datadir.
während der Erstellung des Backups Schreibrechte auf das durch den Parameter target-dir angegebene Verzeichnis zu haben.
Was ist das datadir?
datadir – das ist das Verzeichnis, in dem der Datenbankserver MySQL Daten speichert. Alle Datenbanken und Tabellen befinden sich dort. In den meisten Linux-Distributionen ist dieses Verzeichnis standardmäßig /var/lib/mysql.
Was ist das target-dir Verzeichnis?
target-dir – das ist das Verzeichnis, in dem das Backup gespeichert wird.
Der Benutzer der Datenbank benötigt die folgenden Zugriffsrechte auf die Tabellen und Datenbanken, die gesichert werden sollen:
RELOAD und LOCK TABLES
REPLICATION CLIENT
CREATE TABLESPACE
PROCESS
SUPER
CREATE
INSERT
SELECT
Konfiguration
Konfiguration XtraBackup wird mit Optionen ausgeführt, die sich wie die Standardparameter von MySQL verhalten.
Was bedeutet das?
Konfigurationseinstellungen können entweder in der Befehlszeile oder in der Konfigurationsdatei der DBMS angegeben werden, zum Beispiel in /etc/my.cnf.
Das XtraBackup-Dienstprogramm liest nach dem Start die Abschnitte [mysqld] und [xtrabackup] aus den MySQL-Konfigurationsdateien. Dies geschieht, damit das Dienstprogramm die Einstellungen Ihres DBMS verwenden kann, ohne bei jedem Backup die Parameter manuell angeben zu müssen.
Zum Beispiel der Wert datadir und einige Parameter InnoDB werden aus der Konfiguration Ihres DBMS für XtraBackup übernommen.
Wenn Sie die für XtraBackup erforderlichen Parameter, die sich im Abschnitt befinden, überschreiben möchten [mysqld], geben Sie sie einfach in der Konfigurationsdatei im Abschnitt [xtrabackup]an. Da sie später gelesen werden, haben sie eine höhere Priorität.
Sie müssen keine Parameter in my.cnfhinzufügen. Alle erforderlichen Parameter können in der Befehlszeile angegeben werden. In der Regel ist das einzige, was sinnvoll im Abschnitt [xtrabackup] Ihrer my.cnf -Konfiguration untergebracht werden kann, der Parameter target_dir, der standardmäßig das Verzeichnis definiert, in das die Backups gespeichert werden. Aber das ist nicht zwingend erforderlich.
Beispiel für die Angabe des Pfads zum Backup-Verzeichnis in my.cnf:
[xtrabackup]
target_dir = /data/backups/mysql/Szenario zum Erstellen eines Backups
Um ein Backup zu erstellen, kann das folgende Skript verwendet werden:
#!/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 bereinigen wir (löschen) das Verzeichnis, in das wir das Backup speichern werden:
rm -rf /mysql/backup.
Dann erstellen wir mit dem Dienstprogramm XtraBackup ein Backup und speichern es in /mysql/backup/:
xtrabackup --user=xtrabackup --password=xxxxz1cYf95550Gc6xxxxxxxpE3rB03xxxx --backup --target-dir=/mysql/backupZuvor haben wir in MySQL den Benutzer xtrabackup mit den erforderlichen Rechten erstellt. Mit dem Parameter target-dir geben wir das Verzeichnis an, in das das Backup gespeichert werden soll.
Wichtiger Punkt!
Beachten Sie die Zeile im Skript:
xtrabackup --prepare --target-dir=/mysql/backup
Die Daten im Verzeichnis /mysql/backup sind nicht konsistent, bis sie vorbereitet sind.
Das liegt daran, dass während der Dateiübertragung Änderungen aufgetreten sein könnten. Der Vorgang xtrabackup --prepare --target-dir=/mysql/backup macht die Backup-Daten zeitlich perfekt konsistent.
Die Vorbereitung der Daten kann auf jedem Server durchgeführt werden. Es ist nicht erforderlich, dies auf dem Server zu tun, auf dem sich die ursprüngliche DBMS befindet. Sie können das Backup auf den Zielserver kopieren und 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 Sicherungskopie
Bevor Sie mit der Wiederherstellung der Sicherungskopie auf dem Zielserver beginnen, müssen die Daten einen Vorbereitungsprozess durchlaufen. Wie das geht, erfahren Sie oben.
Der Wiederherstellungsprozess ist sehr einfach. Sie müssen die Sicherungskopie aus dem Archiv extrahieren und die Daten in datadir.
Wie ersetzt man die Daten im datadir?
Betrachten wir zwei Varianten.
Option 1
Verwenden Sie das Dienstprogramm XtraBackup. Sie müssen die Option angeben —copy-back.
Der folgende Befehl wird die Sicherungskopie nach datadir des Zielservers verschieben:
xtrabackup --copy-back --target-dir=/mysql/backupOption 2
Man kann es auch anders machen, ohne das Dienstprogramm XtraBackup.
Alles, was Sie tun müssen, ist, die Sicherungskopie nach datadir. Sie können dies mit cp oder rsync.
Es ist wichtig zu verstehen, dass die Wiederherstellungsverfahren lediglich den Inhalt des Verzeichnisses ersetzen. datadir.
Bevor Sie mit der Wiederherstellung der Sicherungskopie auf dem Zielserver beginnen, müssen Sie:
Den MySQL-Server stoppen.
Den Ordner datadir leeren oder seinen Inhalt an einen anderen Ort verschieben. Das Verzeichnis datadir muss unbedingt leer sein.
Nach Abschluss der Datenübertragung kann der MySQL-Server in datadir gestart werden.
Verwendete Materialien
.
Quelle: habr.com
