Inhaltsverzeichnis
	- Einführung
- Voraussetzungen
- Schritt 1: Erstellen Sie einen Benutzer ohne Root-System
- Schritt 2: Überprüfen Sie die Speicher-Engine
- Schritt 3: Erstellen Sie einen Datenbankbenutzer für die Sicherung
- Schritt 4: Installieren Sie Percona XtraBackup
- Schritt 5: Erstellen Sie Sicherungsspeicherverzeichnisse
- Schritt 6: Erstellen Sie die erste vollständige Sicherung
- Schritt 7: Erstellen Sie die folgenden inkrementellen Sicherungen
- Schritt 8: Bereiten Sie Sicherungsdateien für die Wiederherstellung der Datenbank vor
- Schritt 9: Datenbank wiederherstellen
- Weitere Schritte
Einführung
Percona XtraBackup ist ein kostenloses MySQL-basiertes Programm zum Erstellen heißer Backups. Es ist auch Open-Source. Mit Percona XtraBackup können Sie Hot-Backups von MySQL-, MariaDB- oder Percona Server-Datenbanken erstellen, ohne Ihren Datenbankdienst zu stoppen oder schreibgeschützt zu machen. Dies ist eine geschäftskritische Funktion für viele Online-Unternehmen.
Bei Datenbanken mit InnoDB-, XtraDB- und HailDB-Speicher-Engines kann Percona XtraBackup nicht blockierende Sicherungen durchführen. Bei Datenbanken mit MyISAM-, Merge- und Archive-Speicher-Engines kann Percona XtraBackup auch Sicherungen durchführen, indem die Schreibvorgänge am Ende des Sicherungsvorgangs kurz angehalten werden.
In diesem Artikel werde ich Ihnen zeigen, wie Sie Percona XtraBackup installieren und verwenden, um vollständige und inkrementelle Hot-Backups auf einem Vultr-Server basierend auf der One-Click-WordPress-Anwendung durchzuführen. Wir führen eine vollständige Sicherung und zwei inkrementelle Sicherungen durch und stellen dann die Datenbank entsprechend auf den Status jeder der drei Sicherungen zurück.
Voraussetzungen
Ich gehe davon aus, dass Sie eine One-Click-WordPress-Vultr-Serverinstanz von Grund auf neu bereitgestellt und sich mit SSH als Root angemeldet haben.
Schritt 1: Erstellen Sie einen Benutzer ohne Root-System
Aus Sicherheitsgründen wird empfohlen, ein anderes Benutzerkonto mit Root-Berechtigungen zu erstellen und es dann zum Anmelden und Ausführen Ihrer täglichen Vorgänge auf dem System zu verwenden. Mit dem sudoBefehl können Sie immer noch fast alle Superuser-Befehle ausführen .
1) Erstellen Sie einen neuen Benutzer. Ersetzen Sie sysuserdurch Ihren eigenen Benutzernamen.
useradd sysuser
2) Legen Sie das Passwort für Ihren neuen Benutzer fest. Ersetzen Sie sysuserdurch Ihren eigenen Benutzernamen.
passwd sysuser
3) Gewähren Sie Ihrem neuen Benutzer Root-Berechtigungen.
visudo
Finden Sie den folgenden Absatz.
## Allow root to run any commands anywhere
root     ALL=(ALL)     ALL
Fügen Sie eine Zeile direkt unter diesem Absatz hinzu und ersetzen Sie sie sysuserdurch Ihren eigenen Benutzernamen.
sysuser     ALL=(ALL)     ALL
Speichern und Beenden.
:wq
4) Wechseln Sie zu Ihrem neuen Benutzerkonto.
logout
Verwenden Sie dann die Anmeldeinformationen des neuen Benutzers, um sich über Ihr Terminalfenster anzumelden.
Schritt 2: Überprüfen Sie die Speicher-Engine
Standardmäßig wird die MySQL-Root-Anmeldung auf dem VPS in gespeichert /root/.my.cnf. Zeigen Sie das Passwort in Ihrem Terminal mit dem folgenden Befehl an.
sudo cat /root/.my.cnf
Verwenden Sie die auf dem Bildschirm angezeigten Anmeldeinformationen, um sich bei der MySQL-Konsole anzumelden.
mysql -u root -p
Führen Sie in der MySQL-Shell Folgendes aus.
SHOW DATABASES;
Alle MySQL-Datenbanken wurden auf dem Bildschirm angezeigt. Die Datenbank mit dem Namen like wp5273512ist die WordPress-Datenbank, die wir sichern möchten. Ersetzen wp5273512Sie im folgenden Befehl Ihren eigenen:
USE wp5273512;
Überprüfen Sie die Speicher-Engine für jede Tabelle:
SHOW TABLE STATUS\G
Sie werden feststellen, dass alle Tabellen in Ihrer WordPress MySQL-Datenbank die InnoDB-Speicher-Engine verwenden, die sich perfekt für Hot-Backups mit Percona XtraBackup eignet.
Für alle anderen MySQL-Datenbanken, die die MyISAM-Speicher-Engine verwenden, können wir sie weiterhin mit Percona XtraBackup sichern, indem wir die Schreibvorgänge kurz anhalten.
Schritt 3: Erstellen Sie einen Datenbankbenutzer für die Sicherung
Verwenden Sie weiterhin in der MySQL-Shell die folgenden Befehle, um einen dedizierten Datenbankbenutzer für die Sicherung zu erstellen. Denken Sie daran, den Datenbank-Benutzernamen xbuserund das Passwort xbpasswddurch Ihre eigenen zu ersetzen :
CREATE USER 'xbuser'@'localhost' IDENTIFIED BY 'xbpasswd';
GRANT RELOAD, LOCK TABLES, REPLICATION CLIENT, CREATE TABLESPACE, PROCESS, SUPER, CREATE, INSERT, SELECT ON *.* TO 'xbuser'@'localhost';
FLUSH PRIVILEGES;
EXIT;
Die oben gewährten Berechtigungen sind für die volle Percona XtraBackup-Funktionalität erforderlich. Sie können einige davon entfernen, um weniger Funktionalität und mehr Sicherheit zu gewährleisten. Weitere Informationen finden Sie auf der offiziellen Website von Percona XtraBackup .
Schritt 4: Installieren Sie Percona XtraBackup
Sie können Percona XtraBackup ganz einfach aus dem RPM-Repository von Percona installieren:
sudo yum install -y http://www.percona.com/downloads/percona-release/redhat/0.1-3/percona-release-0.1-3.noarch.rpm
sudo yum install -y percona-xtrabackup
Schritt 5: Erstellen Sie Sicherungsspeicherverzeichnisse
Zuerst müssen Sie einen Benutzer sysuserzur mysqlGruppe hinzufügen . Ersetzen Sie sysuserdurch Ihren eigenen Benutzernamen.
sudo gpasswd -a sysuser mysql
Erstellen Sie ein Verzeichnis zum Speichern vollständiger Sicherungen.
sudo mkdir -p /dbbackup/full/
Erstellen Sie ein anderes Verzeichnis zum Speichern inkrementeller Sicherungen.
sudo mkdir -p /dbbackup/inc/
Ändern Sie den Eigentümer dieser Verzeichnisse in Benutzer sysuserund Gruppe sysuser.
sudo chown -R sysuser:sysuser /dbbackup
Melden Sie sich ab, um diese Änderungen zu übernehmen. 
logout
Melden Sie sich dann sysusererneut mit an.
Schritt 6: Erstellen Sie die erste vollständige Sicherung
XtraBackup besteht hauptsächlich aus dem XtraBackup-Programm und dem innobackupexPerl-Skript. Normalerweise können Sie das innobackupexPerl-Skript verwenden, um verschiedene Betriebsverfahren zur Vereinfachung auszuführen.
Geben Sie den folgenden Befehl ein, um die erste vollständige Sicherung zu erstellen. Denken Sie daran, den Datenbankbenutzernamen xbuser, das Datenbankbenutzerkennwort xbpasswdund das vollständige Sicherungsverzeichnis /dbbackup/full/durch Ihre eigenen zu ersetzen .
sudo innobackupex --user=xbuser  --password=xbpasswd /dbbackup/full/
Wenn dieser Befehl korrekt ausgeführt wird, wird die Bestätigungsmeldung "innobackupex: erledigt OK!" Angezeigt. in der letzten Zeile der Ausgabe.
Alle neu erstellten Dateien dieser vollständigen Sicherung werden in einem Verzeichnis mit Zeitstempel unter gespeichert /dbbackup/full/. Zum Beispiel /dbbackup/full/2015-05-22_05-45-54.
Schritt 7: Erstellen Sie die folgenden inkrementellen Sicherungen
Geben Sie den folgenden Befehl ein, um die erste inkrementelle Sicherung zu erstellen. Ersetzen Sie die Variablen im Befehl entsprechend.
sudo innobackupex --user=xbuser  --password=xbpasswd --incremental --incremental-basedir=/dbbackup/full/2015-05-22_05-45-54 /dbbackup/inc/
Wieder sehen Sie "innobackupex: OK abgeschlossen!" am Ende der Ausgabe, wenn der Befehl erfolgreich ausgeführt wird. Die Sicherungsdateien werden in einem Verzeichnis mit Zeitstempel unter gespeichert /dbbackup/inc/.
Geben Sie den folgenden Befehl ein, um die zweite inkrementelle Sicherung zu erstellen. Ersetzen Sie die Variablen im Befehl entsprechend.
sudo innobackupex --user=xbuser  --password=xbpasswd --incremental --incremental-basedir=/dbbackup/inc/2015-05-22_05-48-12 /dbbackup/inc/
Nach dem Erfolg sehen Sie das "innobackupex: OK abgeschlossen!" Nachricht erneut. Überprüfen Sie den /dbbackup/inc/Ordner erneut, um die Sicherungsdateien anzuzeigen.
Schritt 8: Bereiten Sie Sicherungsdateien für die Wiederherstellung der Datenbank vor
Alle Datenbanksicherungsdateien müssen vorbereitet werden, bevor sie zum Wiederherstellen der Datenbank verwendet werden können.
Hinweis : Bevor Sie die Vorbereitungs- und Wiederherstellungsverfahren ausführen, sollten Sie eine Kopie des gesamten Sicherungsverzeichnisses (z. B. /dbbackup/) an einem anderen Ort aufbewahren, falls die Sicherung der Dateien versehentlich beschädigt wird.
In jedem Sicherungsverzeichnis befindet sich eine Datei mit dem Namen, xtrabackup_checkpointsdie den Sicherungstyp sowie die Anfangs- und Endprotokollsequenznummern ( from_lsnund to_lsn) enthält. Sie können diese Zahlen verwenden, um Ihre Datenbankwiederherstellungsstrategie zu verdeutlichen. Schauen Sie sich die folgenden Beispiele an.
In der xtrabackup_checkpointsDatei der ersten vollständigen Sicherung habe ich:
backup_type = full-backuped
from_lsn = 0
to_lsn = 2932478
In der xtrabackup_checkpointsDatei der ersten inkrementellen Sicherung habe ich:
backup_type =incremental
from_lsn = 2932478
to_lsn = 2970177
In der xtrabackup_checkpointsDatei der zweiten inkrementellen Sicherung habe ich:
backup_type = incremental
from_lsn = 2970177
to_lsn = 3004672
Kurz gesagt, Sie sollten jedes Backup mit der zunehmenden Reihenfolge von lsn angehen. Wenn die lsn-Sequenz unvollständig oder ungeordnet ist, können Daten verloren gehen.
Hinweis : Die folgenden Befehle umfassen drei Verzeichnisse. Ersetzen Sie sie durch Ihre eigenen.
Um die Datenbank auf den Status der ersten vollständigen Sicherung zurückzusetzen, müssen Sie die Sicherungsdateien mit dem folgenden Befehl vorbereiten:
sudo innobackupex --apply-log /dbbackup/full/2015-05-22_05-45-54
Um die Datenbank auf den Status der ersten inkrementellen Sicherung zurückzusetzen, müssen Sie die Sicherungsdateien mit den folgenden Befehlen vorbereiten:
sudo innobackupex --apply-log --redo-only /dbbackup/full/2015-05-22_05-45-54
sudo innobackupex --apply-log /dbbackup/full/2015-05-22_05-45-54 --incremental-dir=/dbbackup/inc/2015-05-22_05-48-12
sudo innobackupex --apply-log /dbbackup/full/2015-05-22_05-45-54
Um die Datenbank auf den Status der zweiten inkrementellen Sicherung zurückzusetzen, müssen Sie die Sicherungsdateien mit den folgenden Befehlen vorbereiten:
sudo innobackupex --apply-log --redo-only /dbbackup/full/2015-05-22_05-45-54
sudo innobackupex --apply-log --redo-only /dbbackup/full/2015-05-22_05-45-54 --incremental-dir=/dbbackup/inc/2015-05-22_05-48-12
sudo innobackupex --apply-log /dbbackup/full/2015-05-22_05-45-54 --incremental-dir=/dbbackup/inc/2015-05-22_05-51-32
sudo innobackupex --apply-log /dbbackup/full/2015-05-22_05-45-54
Anmerkungen :
Für inkrementelle Sicherungen sollten Sie die --redo-onlyOption für alle außer der letzten inkrementellen Sicherung verwenden. Die Verwendung dieser Option bei der letzten inkrementellen Sicherung ist jedoch für die Konsistenz Ihrer Daten immer noch unbedenklich. Aufgrund des Datenbank-Rollbacks kommt es nur zu Verzögerungen.
Der letzte Befehl jedes inkrementellen Szenarios ist optional, wird jedoch empfohlen, da er die Wiederherstellung beschleunigt.
Nach der Vorbereitung werden die in den inkrementellen Sicherungsdateien aufgezeichneten Änderungen an die vorbereiteten vollständigen Basissicherungsdateien angehängt. Verwenden Sie daher immer die vorbereiteten vollständigen Sicherungsdateien, um Ihre Datenbank wiederherzustellen, unabhängig davon, ob Sie eine vollständige Sicherung oder eine inkrementelle Sicherung auswählen.
Schritt 9: Datenbank wiederherstellen
Bevor Sie Ihre Datenbank wiederherstellen können, müssen Sie den Datenbankdienst beenden.
sudo service mysqld stop
Sie müssen auch das Datenbankverzeichnis leeren. Sie können die aktuellen Datenbankdateien vorsorglich an einen anderen Ort verschieben.
sudo mkdir /currentdb
sudo mv /var/lib/mysql/* /currentdb
Stellen Sie Ihre Datenbank mit den vorbereiteten "vollständigen Sicherungs" -Dateien wieder her.
sudo innobackupex --copy-back /dbbackup/full/2015-05-22_05-45-54
Da durch die Wiederherstellungsprozedur der Eigentümer des Datenbankverzeichnisses geändert wird, müssen Sie es wieder ändern mysql:mysql, um es betriebsbereit zu machen.
sudo chown -R mysql:mysql /var/lib/mysql
Starten Sie den Datenbankdienst neu.
sudo service mysqld start
Das ist es. Zu diesem Zeitpunkt können Sie Ihre WordPress-Site besuchen, um zu überprüfen, ob der Wiederherstellungsprozess erfolgreich war.