MySQL Backup und Wiederherstellung

MySQLBeginner
Jetzt üben

Einführung

In diesem Lab lernen Sie, wie Sie MySQL-Datenbanken mit dem Befehlszeilen-Tool mysqldump sichern und wiederherstellen. mysqldump ist ein entscheidendes Dienstprogramm zur Erstellung logischer Backups, die für den Datenschutz, die Notfallwiederherstellung und die Migration unerlässlich sind.

Sie üben das Sichern einer gesamten Datenbank, das Sichern einer einzelnen Tabelle und anschließend das Wiederherstellen beider aus den Backup-Dateien. Das Lab führt Sie durch die Simulation von Datenverlustszenarien und die Verwendung Ihrer Backups zur Wiederherstellung der Daten, um sicherzustellen, dass Sie den vollständigen Backup- und Wiederherstellungslebenszyklus verstehen.

Eine gesamte Datenbank sichern

Der erste Schritt zum Datenschutz ist die Erstellung eines vollständigen Backups. In diesem Schritt verwenden Sie mysqldump, um ein vollständiges Backup der Datenbank mydatabase zu erstellen, die für Sie vorkonfiguriert wurde.

Öffnen Sie zuerst das Terminal. Lassen Sie uns die Datenbank inspizieren, um zu sehen, was sie enthält. Verbinden Sie sich mit dem MySQL-Server als Benutzer root.

sudo mysql -u root

Sobald Sie die Eingabeaufforderung mysql> sehen, wechseln Sie zur Datenbank mydatabase und zeigen Sie deren Tabellen an.

USE mydatabase;
SHOW TABLES;

Sie sollten zwei Tabellen sehen: products und users.

+--------------------+
| Tables_in_mydatabase |
+--------------------+
| products           |
| users              |
+--------------------+
2 rows in set (0.00 sec)

Beenden Sie nun die MySQL-Shell, um zum Terminal zurückzukehren.

exit

Es ist Zeit, die gesamte Datenbank zu sichern. Der Befehl mysqldump liest die Datenbank und gibt die SQL-Anweisungen aus, die zur Neuerstellung erforderlich sind. Wir werden diese Ausgabe in eine .sql-Datei umleiten.

Führen Sie den folgenden Befehl aus, um mydatabase zu sichern und in einer Datei namens mydatabase_backup.sql im Verzeichnis /home/labex/backup zu speichern.

sudo mysqldump -u root mydatabase > /home/labex/backup/mydatabase_backup.sql

Um zu bestätigen, dass die Backup-Datei erstellt wurde, listen Sie den Inhalt des Verzeichnisses /home/labex/backup auf.

ls /home/labex/backup

Sie sollten Ihre Backup-Datei aufgelistet sehen.

mydatabase_backup.sql

Sie haben erfolgreich ein vollständiges Backup der Datenbank erstellt.

Eine einzelne Tabelle sichern

Manchmal müssen Sie nur eine bestimmte Tabelle sichern und nicht die gesamte Datenbank. Dies ist nützlich für kleinere, gezielte Operationen. In diesem Schritt sichern Sie nur die Tabelle products.

Die Syntax ist ähnlich wie bei einem vollständigen Datenbank-Backup, aber Sie geben den Tabellennamen nach dem Datenbanknamen an.

Führen Sie im Terminal den folgenden Befehl aus, um die Tabelle products aus mydatabase zu sichern. Das Backup wird als products_backup.sql gespeichert.

sudo mysqldump -u root mydatabase products > /home/labex/backup/products_backup.sql

Lassen Sie uns überprüfen, ob die neue Backup-Datei erstellt wurde. Listen Sie erneut den Inhalt des Backup-Verzeichnisses auf.

ls /home/labex/backup

Sie sollten nun sowohl das vollständige Datenbank-Backup als auch das Backup einer einzelnen Tabelle sehen.

mydatabase_backup.sql  products_backup.sql

Sie können den Inhalt der Backup-Datei für die einzelne Tabelle überprüfen, um zu sehen, dass sie nur Informationen für die Tabelle products enthält.

cat /home/labex/backup/products_backup.sql

Die Ausgabe zeigt die SQL-Anweisungen zum Erstellen und Befüllen nur der Tabelle products. Dies bestätigt, dass Sie erfolgreich ein gezieltes Backup erstellt haben.

Eine gesamte Datenbank wiederherstellen

Nachdem Sie nun Backups haben, üben wir deren Wiederherstellung. In diesem Schritt simulieren Sie eine Katastrophe, indem Sie die gesamte Datenbank mydatabase löschen und sie dann aus Ihrer vollständigen Backup-Datei wiederherstellen.

Lassen Sie uns zuerst die Datenbank löschen. Das Flag -e ermöglicht es Ihnen, einen einzelnen SQL-Befehl direkt von Ihrem Terminal auszuführen.

sudo mysql -u root -e "DROP DATABASE mydatabase;"

Überprüfen Sie, ob die Datenbank entfernt wurde.

sudo mysql -u root -e "SHOW DATABASES;"

Sie werden sehen, dass mydatabase nicht mehr in der Liste aufgeführt ist.

Bevor Sie die Daten wiederherstellen können, müssen Sie eine leere Datenbank mit demselben Namen erstellen.

sudo mysql -u root -e "CREATE DATABASE mydatabase;"

Stellen Sie nun die Datenbank wieder her, indem Sie die Datei mydatabase_backup.sql als Eingabe für den mysql-Client umleiten.

sudo mysql -u root mydatabase < /home/labex/backup/mydatabase_backup.sql

Der Befehl führt alle SQL-Anweisungen in der Backup-Datei aus und erstellt die Tabellen neu und fügt die Daten ein.

Um die Wiederherstellung zu überprüfen, verbinden Sie sich mit MySQL und überprüfen Sie die Tabellen und deren Inhalt.

sudo mysql -u root

Geben Sie an der mysql>-Eingabeaufforderung diese Befehle ein:

USE mydatabase;
SHOW TABLES;
SELECT * FROM users;

Sie sollten die Tabellen products und users wieder sehen, und die Tabelle users sollte ihre ursprünglichen Daten enthalten.

+--------------------+
| Tables_in_mydatabase |
+--------------------+
| products           |
| users              |
+--------------------+
2 rows in set (0.00 sec)

+----+------------+--------------------------+
| id | name       | email                    |
+----+------------+--------------------------+
|  1 | John Doe   | john.doe@example.com     |
|  2 | Jane Smith | jane.smith@example.com   |
+----+------------+--------------------------+
2 rows in set (0.00 sec)

Beenden Sie die MySQL-Shell.

exit

Sie haben die gesamte Datenbank erfolgreich von einem katastrophalen Ausfall wiederhergestellt.

Zusammenfassung

In diesem Lab haben Sie die wesentlichen Fähigkeiten für die Sicherung und Wiederherstellung von MySQL-Datenbanken mit dem Dienstprogramm mysqldump erlernt. Sie haben das Erstellen eines vollständigen Backups einer Datenbank und eines gezielten Backups einer einzelnen Tabelle geübt.

Sie haben auch praktische Erfahrungen mit Wiederherstellungsverfahren gesammelt, indem Sie sowohl einen vollständigen Datenbankverlust als auch die versehentliche Löschung einer einzelnen Tabelle simuliert haben. Durch die erfolgreiche Wiederherstellung der Daten in beiden Szenarien haben Sie ein grundlegendes Verständnis des vollständigen Datenlebenszyklus demonstriert, eine kritische Fähigkeit für jeden Datenbankadministrator oder Entwickler.