Sichern von MySQL mit dem Tool XtraBackup

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 InnoDBXtraDB 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-24

2. 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)

Sichern von MySQL mit dem Tool XtraBackup

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/backup

Was 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/backup

Zuvor 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/backup

Wiederherstellung 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/backup

Option 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

Die offizielle Dokumentation Percona XtraBackup.

Quelle: habr.com

60GB SSD 8Gb DDR4