GNU/Linux >> LINUX-Kenntnisse >  >> Ubuntu

Führen Sie Hot Backups von MySQL-Datenbanken mit Percona XtraBackup auf Ubuntu 16.04 durch

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.


Ubuntu
  1. Installieren und starten Sie mit MySQL Workbench unter Ubuntu

  2. Ubuntu 20.04:WordPress mit Nginx-Installation

  3. So installieren Sie Nginx mit PHP5 und MySQL unter Ubuntu 11.10

  4. So installieren Sie Mattermost mit MySQL unter Ubuntu 14.04 und Debian 8

  5. So erstellen Sie ein Backup von MySQL-Datenbanken mit mysqldump unter Ubuntu 20.04

Virtuelles Hosting mit vsftpd und MySQL auf Ubuntu 12.10

So sichern Sie Ihren Ubuntu-Desktop mit DejaDup

Installieren von Nginx mit PHP5- und MySQL-Unterstützung auf Ubuntu 8.10

So installieren Sie Drupal 7 mit Apache unter Ubuntu 14.04

Installieren Sie WordPress mit LEMP Stack auf Ubuntu 20.04

Installieren Sie WordPress mit LEMP Stack auf Ubuntu 20.04