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 EIN

Percona 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.deb

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

Percona 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-client

Setzen Sie ein sicheres Passwort für den Root-Benutzer mit diesem Befehl:

mysql_secure_installation

Wenn 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 EIN

Erstellen 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;  
exit

Erstellen 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_backup

Hinweis:

–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.

Erstellen Sie ein Backup mit Percona XtraBackup

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_backup

Stellen Sie sicher, dass der Prozess ohne Fehler abgeschlossen ist, bevor Sie fortfahren.

Bereiten Sie das vollständige Backup vor

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_backup

Die 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 mysql

Machen 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_backup

Wenn 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

Backup wiederherstellen

Die MySQL-Instanz wurde erfolgreich mit Percona XtraBackup wiederhergestellt.

Referenz

Share: X/Twitter LinkedIn

Erhalte neue Beiträge in deinem Posteingang.

Kein Spam. Jederzeit abmelden.