Percona XtraBackup ist ein Open-Source-Backup-Dienstprogramm 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 dieser ohne Ausfallzeit 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. Ich werde MariaDB als Datenbankserver verwenden, um die Sicherung durchzuführen, aber das gleiche Setup funktioniert auch für MySQL-Server.
Voraussetzung
- Ubuntu-Server 16.04 - (Xenial Xerus)
- MySQL- oder MariaDB-Server
- Root-Berechtigungen
Schritt 1 – Percona XtraBackup installieren
Der erste Schritt besteht darin, die neueste Percona XtraBackup-Software auf unserem Ubuntu-Server zu installieren. Melden Sie sich per SSH (oder auf der Konsole) bei Ihrem Server an:
ssh [email protected]
TYPE YOUR PASSWORD
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 Internet herunterladen und es 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
Aktualisieren Sie als Nächstes das Repository und installieren Sie Ppercona XtraBackup 2.4 (derzeit die neueste Version):
sudo apt-get update
sudo apt-get install percona-xtrabackup-24
Percona XtraBackup ist installiert.
Schritt 2 – Benutzer- und Sicherungsverzeichnis konfigurieren
Um das Hot-Backup durchzuführen, müssen wir einen neuen mysql-Benutzer mit speziellen Privilegien und Berechtigungen erstellen. In diesem Tutorial verwende ich MariaDB 10.0 als Datenbankserver. Wenn Sie noch keine MySQL-kompatible Datenbank installiert haben, können Sie sie mit dem folgenden Befehl installieren:
sudo apt-get install mariadb-server mariadb-client
Legen Sie mit diesem Befehl ein sicheres Passwort für den Root-Benutzer fest:
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
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';
Gewähren Sie dem Benutzer die folgenden Privilegien:'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 zum Speichern der MySQL-Sicherungsdateien:
mkdir -p /data/backups/mysql/
Der neue Backup-Nutzer und ein Backup-Verzeichnis wurden erstellt.
Schritt 3 – Sicherung 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 Backups für eine ganze MySQL-Datenbankinstanz, indem es xtrabackup in Kombination mit xbstream und xbcrypt verwendet.
In diesem Schritt erstellen und bereiten wir ein vollständiges Backup für die MySQL-Instanz vor.
A. Erstellen Sie ein Backup mit Innobackupex
In Schritt 2 haben wir ein neues Verzeichnis für die Sicherung erstellt und einen neuen mysql-Sicherungsbenutzer hinzugefügt. Wir werden sie jetzt verwenden, um eine Sicherung mit dem Befehl innobackupex zu erstellen.
Erstellen Sie mit dem innobackupex ein MySQL-Backup im neuen Verzeichnis „/data/backups/my_backup“:
innobackupex --user=bekupuser --password=mypassword --no-timestamp /data/backups/my_backup
Hinweis:
--Benutzer =Benutzer mit den erforderlichen Backup-Berechtigungen (Schritt-2).
--Passwort =Passwort des Backup-Benutzers.
--no-timestamp =Deaktivieren Sie die Erstellung eines neuen Unterverzeichnisses mit Zeitstempel im Backup-Root-Verzeichnis.
/data/backups/my_backup =Verzeichnis für die Sicherung, es wird während des Sicherungsvorgangs automatisch erstellt. Wenn das Verzeichnis existiert, 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 'Zeitstempel '-Format.
Ergebnisse:
B. Erstellen Sie eine vollständige Sicherung mit Innobackupex
Nach dem Erstellen einer neuen Sicherung sind die Daten nicht bereit für eine Wiederherstellung. Es gibt einen weiteren Schritt, damit die Daten wiederhergestellt werden können. Wir brauchen die „Vorbereitungsphase“, damit die Daten wiederhergestellt werden können.
Bereiten Sie die Sicherung mit innobackupex mit der Option --apply-log vor in das Sicherungsverzeichnis '/data/backups/my_backup ':
innobackupex --apply-log /data/backups/my_backup
Stellen Sie sicher, dass der Vorgang fehlerfrei abgeschlossen ist, bevor Sie fortfahren.
Wenn Sie über genügend Speicher und eine große Datenbank verfügen, 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 können jetzt wiederhergestellt werden. Wir können es auf demselben Server oder auf einem anderen Server wiederherstellen, auf dem MariaDB ausgeführt wird.
Schritt 4 – Vollständige Sicherung mit Innobackupex wiederherstellen
In diesem Schritt stellen wir die MySQL-Instanz mit innobackupex wieder her.
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
Erstellen Sie eine Sicherungskopie des alten MySQL-Datenverzeichnisses:
mkdir ~/mysql_old/
mv /var/lib/mysql/* ~/mysql_old/
Stellen Sie als Nächstes die MySQL-Instanz aus der vollständigen Sicherung mit innobackupex wieder her:
innobackupex --copy-back /data/backups/my_backup
Wenn Sie das Ergebnis „innobackupex:complete 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
Die MySQL-Instanz wurde erfolgreich mit percona-xtrabackup wiederhergestellt.