Datenbank Backup · 4 min read · Dec 13, 2025
Führen Sie Hot-Backups von MySQL-Datenbanken mit Percona XtraBackup auf Ubuntu 16.04 durch
Percona XtraBackup ist ein Open-Source-Backup-Tool für MySQL. Es unterstützt alle MySQL-Varianten wie Percona Server, MariaDB und (Oracle) MySQL. Percona Xtrabackup führt ein Hot-Backup für MySQL durch. Hot-Backup bedeutet, ein Backup eines MySQL-Servers zu erstellen, während er läuft, ohne Ausfallzeiten.
In diesem Tutorial zeige ich Ihnen, wie Sie ein heißes MySQL-Datenbank-Backup mit dem OpenSource-Tool Percona XtraBackup auf Ubuntu 16.04 (Xenial Xerus) erstellen. Ich werde MariaDB als Datenbankserver verwenden, um das Backup durchzuführen, aber dasselbe Setup funktioniert auch für MySQL-Server.
Voraussetzungen
- Ubuntu-Server 16.04 - (Xenial Xerus)
- MySQL- oder MariaDB-Server
- Root-Rechte
Schritt 1 - Installieren Sie Percona XtraBackup
Der erste Schritt besteht darin, die neueste Percona XtraBackup-Software auf unserem Ubuntu-Server zu installieren. Melden Sie sich per SSH (oder an der Konsole) bei Ihrem Server an:
ssh [email protected]
GEBEN SIE IHR PASSWORT EINPercona XtraBackup ist im Ubuntu-Repository verfügbar, aber wir möchten die neueste Version aus dem Percona-Repository verwenden.
Fügen Sie das Percona-Repository hinzu, indem Sie das deb-Paket aus dem Web herunterladen und mit dem dpkg-Befehl installieren:
wget https://repo.percona.com/apt/percona-release_0.1-3.$(lsb_release -sc)_all.deb
sudo dpkg -i percona-release_0.1-3.$(lsb_release -sc)_all.debAktualisieren Sie als Nächstes das Repository und installieren Sie Percona XtraBackup 2.4 (die neueste Version im Moment):
sudo apt-get update
sudo apt-get install percona-xtrabackup-24Percona XtraBackup ist installiert.
Schritt 2 - Benutzer und Backup-Verzeichnis konfigurieren
Um das Hot-Backup durchzuführen, müssen wir einen neuen MySQL-Benutzer mit speziellen Rechten und Berechtigungen erstellen. In diesem Tutorial werde ich MariaDB 10.0 als Datenbankserver verwenden. Wenn Sie noch keine MySQL-kompatible Datenbank installiert haben, können Sie dies mit dem folgenden Befehl tun:
sudo apt-get install mariadb-server mariadb-clientSetzen Sie ein sicheres Passwort für den Root-Benutzer mit diesem Befehl:
mysql_secure_installationWenn MariaDB installiert ist, greifen Sie als Root-Benutzer mit dem MySQL-Client-Befehl auf die MariaDB/MySQL-Shell zu:
mysql -u root -p
GEBEN SIE DAS MYSQL-PASSWORT EINErstellen Sie einen neuen Benutzer namens ‘ bekupuser ‘ mit dem Passwort ‘ mypassword ‘ (wählen Sie ein sicheres Passwort für Ihren Server!):
CREATE USER 'bekupuser'@'localhost' IDENTIFIED BY 'mypassword';Gewähren Sie dem Benutzer die folgenden Berechtigungen: ‘RELOAD, PROCESS, LOCK TABLES, REPLICATION CLIENT’.
GRANT RELOAD, LOCK TABLES, PROCESS, REPLICATION CLIENT ON *.* TO 'bekupuser'@'localhost';
FLUSH PRIVILEGES;
exitErstellen Sie als Nächstes ein neues Verzeichnis, um die MySQL-Backup-Dateien zu speichern:
mkdir -p /data/backups/mysql/Der neue Backup-Benutzer und ein Backup-Verzeichnis wurden erstellt.
Schritt 3 - Backup mit Innobackupex durchführen
Innobackupex ist ein Perl-Skript-Wrapper für das xtrabackup-Programm. Es ist eine gepatchte Version des von Oracle bereitgestellten innobackup-Skripts, das mit dem InnoDB-Backup-Tool verteilt wird. Innobackupex bietet ein Backup für eine gesamte MySQL-Datenbankinstanz, indem es xtrabackup in Kombination mit xbstream und xbcrypt verwendet.
In diesem Schritt werden wir ein vollständiges Backup für die MySQL-Instanz erstellen und vorbereiten.
A. Erstellen Sie ein Backup mit Innobackupex
In Schritt 2 haben wir ein neues Verzeichnis für das Backup erstellt und einen neuen MySQL-Backup-Benutzer hinzugefügt. Wir werden diese jetzt verwenden, um ein Backup mit dem Innobackupex-Befehl zu erstellen.
Erstellen Sie ein MySQL-Backup mit dem Innobackupex im neuen Verzeichnis ‘/data/backups/my_backup’:
innobackupex --user=bekupuser --password=mypassword --no-timestamp /data/backups/my_backupHinweis:
–user = Benutzer mit den erforderlichen Backup-Berechtigungen (Schritt 2).
–password = Passwort des Backup-Benutzers.
–no-timestamp = Deaktivieren Sie die Erstellung eines neuen zeitgestempelten Unterverzeichnisses im Backup-Stammverzeichnis.
/data/backups/my_backup = Verzeichnis für das Backup, es wird während des Backup-Vorgangs automatisch erstellt. Wenn das Verzeichnis bereits vorhanden ist, erhalten Sie eine Fehlermeldung.

Eine weitere Option:
mkdir -p /data/backups/my_backup2
innobackupex --user=bekupuser --password=mypassword /data/backups/my_backup2
or
innobackupex --user=bekupuser --password=mypassword /data/backups/Hinweis:
Wenn es kein Verzeichnis ‘ my_backup2 ‘ gibt, erhalten Sie Ihr Verzeichnis basierend auf dem ‘ timestamp ‘-Format.
Ergebnisse:
B. Bereiten Sie ein vollständiges Backup mit Innobackupex vor
Nachdem Sie ein neues Backup erstellt haben, sind die Daten nicht bereit für eine Wiederherstellung. Es gibt einen weiteren Schritt, damit die Daten wiederhergestellt werden können. Wir benötigen die ‘Vorbereitungsphase’, damit die Daten wiederhergestellt werden können.
Bereiten Sie das Backup mit Innobackupex mit der Option –apply-log für das Backup-Verzeichnis ‘/data/backups/my_backup ‘ vor:
innobackupex --apply-log /data/backups/my_backupStellen Sie sicher, dass der Prozess ohne Fehler abgeschlossen ist, bevor Sie fortfahren.

Wenn Sie genügend Speicher und eine große Datenbank haben, können Sie die Option –use-memory=memorynumber verwenden, um Innobackupex mitzuteilen, wie viel Speicher es verwenden darf:
innobackupex --apply-log --use-memory=4G /data/backups/my_backupDie Daten sind jetzt bereit zur Wiederherstellung. Wir können sie auf demselben Server oder auf einem anderen Server, der MariaDB ausführt, wiederherstellen.
Schritt 4 - Vollständiges Backup mit Innobackupex wiederherstellen
In diesem Schritt werden wir die MySQL-Instanz mit Innobackupex wiederherstellen.
Bevor wir die MySQL-Instanz wiederherstellen, müssen wir den MySQL-Prozess mit dem systemctl-Befehl stoppen (der MariaDB-Prozess heißt mysql):
systemctl stop mysqlMachen Sie ein Backup des alten MySQL-Datenverzeichnisses:
mkdir ~/mysql_old/
mv /var/lib/mysql/* ~/mysql_old/Stellen Sie als Nächstes die MySQL-Instanz aus dem vollständigen Backup mit Innobackupex wieder her:
innobackupex --copy-back /data/backups/my_backupWenn Sie das Ergebnis ‘ innobackupex: completed OK ‘ sehen, haben Sie Ihre MySQL-Instanz erfolgreich wiederhergestellt.
Ändern Sie nun den Besitzer des MySQL-Datenverzeichnisses auf den MySQL-Benutzer und starten Sie den Dienst erneut:
chown -R mysql:mysql /var/lib/mysql
systemctl start mysql
Die MySQL-Instanz wurde erfolgreich mit Percona XtraBackup wiederhergestellt.
Referenz
Erhalte neue Beiträge in deinem Posteingang.
Kein Spam. Jederzeit abmelden.