Hot Backups von MySQL-Datenbanken mit Percona XtraBackup auf Ubuntu 16.04 durchführen.

Percona XtraBackup ist ein Open-Source-Backup-Programm 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 ohne Ausfallzeiten läuft.

In diesem Tutorial zeige ich Ihnen, wie Sie mit dem OpenSource-Tool Percona XtraBackup auf Ubuntu 16.04 (Xenial Xerus) ein Hot MySQL Datenbank-Backup erstellen können. Ich werde MariaDB als Datenbankserver verwenden, um das Backup durchzuführen, aber das gleiche Setup funktioniert auch für MySQL-Server.

Voraussetzung

  • Ubuntu-Server 16.04 – (Xenial Xerus)
  • MySQL oder MariaDB Server
  • Root-Privilegien

Schritt 1 – Percona XtraBackup installieren

Der erste Schritt ist die Installation der neuesten Percona XtraBackup-Software auf unserem Ubuntu-Server. Melden Sie sich per SSH (oder über die Konsole) auf Ihrem Server an:

ssh root@192.168.1.15
TYPE YOUR PASSWORD

Percona XtraBackup ist im Ubuntu-Repository verfügbar, aber wir wollen 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 Befehl dpkg 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

Als nächstes aktualisieren Sie das Repository und installieren Ppercona XtraBackup 2.4 (die aktuell neueste Version):

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 Privilegien 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 mit dem folgenden Befehl installieren:

sudo apt-get install mariadb-server mariadb-client

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

mysql_secure_installation

Wenn die MariaDB installiert ist, greifen Sie als root-Benutzer mit dem Befehl mysql client auf die MariaDB/MySQL-Shell zu:

mysql -u root -p
TYPE MySQL PASSWORD

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';

Vergeben Sie dem Benutzer die folgenden Berechtigungen: RELOAD, PROZESS, SPERRTABELLEN, REPLIKATIONSMANDANT‘.

GRANT RELOAD, LOCK TABLES, PROCESS, REPLICATION CLIENT ON *.* TO 'bekupuser'@'localhost';
FLUSH PRIVILEGES;
exit

Als nächstes erstellen Sie ein neues Verzeichnis, um die MySQL-Backup-Dateien zu speichern:

mkdir -p /data/backups/mysql/

Der neue Backup-Benutzer und ein Backup-Verzeichnis wurden angelegt.

Schritt 3 – Backup mit Innobackupex durchführen

Innobackupex ist ein Perl-Skript-Wrapper für das xtrabackup-Programm. Es handelt sich um eine gepatchte Version des Innobackup-Skripts von oracle, das mit dem InnoDB Backup-Tool vertrieben wird. Innobackupex bietet Backup für eine ganze MySQL-Datenbankinstanz und verwendet xtrabackup in Kombination mit xbstream und xbcrypt.

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 die Sicherung erstellt und einen neuen mysql-Backup-Benutzer hinzugefügt. Wir werden sie jetzt verwenden, um ein Backup mit dem Befehl innobackupex zu erstellen.

Erstellen Sie mit der innobackupex ein MySQL-Backup in das neue Verzeichnis’/data/backups/my_backup‘:

innobackupex --user=bekupuser  --password=mypassword --no-timestamp /data/backups/my_backup

Hinweis:

Benutzer = Benutzer mit den erforderlichen Backup-Rechten (Schritt 2).

–password = Passwort des Backup-Benutzers.

no-timestamp = deaktiviert die Erstellung eines neuen Unterverzeichnisses mit Zeitstempel im Backup-Root-Verzeichnis.

/data/backups/my_backup = Verzeichnis für die Sicherung, es wird automatisch während des Backup-Prozesses erstellt. Wenn das Verzeichnis existiert, erhalten Sie eine Fehlermeldung.

Erstellen Sie ein Backup mit Percona XtraBackup.

Eine andere Möglichkeit:

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 Format‘timestamp‚.

Ergebnisse:

Ergebnis des alternativen Sicherungsbefehls.

B. Vorbereitung eines vollständigen Backups mit Innobackupex

Nach der Erstellung eines neuen Backups sind die Daten nicht mehr für eine Wiederherstellung bereit. Es gibt noch einen weiteren Schritt, damit die Daten für die Wiederherstellung bereit sind. Wir brauchen die „Vorbereitungsphase“, damit die Daten wiederhergestellt werden können.

Backup vorbereiten mit innobackupex mit der Option –apply-log im Backup-Verzeichnis ‚/data/backups/my_backup‚:

innobackupex --apply-log /data/backups/my_backup

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

Vorbereiten der vollständigen Sicherung

Wenn du genügend Speicher und eine große Datenbank hast, dann kannst du 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 nun bereit für die Wiederherstellung. Wir können es auf dem gleichen Server oder auf einem anderen Server wiederherstellen, auf dem MariaDB läuft.

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 Befehl systemctl 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/

Als nächstes stellen Sie die mysql-Instanz aus dem Voll-Backup mit innobackupex wieder her:

innobackupex --copy-back /data/backups/my_backup

Wenn Sie das Ergebnis‘innobackupex: completed OK‚ sehen, dann 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

Wiederherstellen der Sicherung

Die MySQL-Instanz wurde mit percona-xtrabackup erfolgreich wiederhergestellt.

Referenz

Das könnte dich auch interessieren …