So stellen Sie eine MySQL-Datenbank nach dem Löschen von Dateien oder einer Partition unter Ubuntu wieder her: RAID 6 und LUKS2

Das Löschen von Dateien oder einer gesamten Festplattenpartition in Ubuntu kann zu kritischem Datenverlust führen, insbesondere wenn auf dem Server eine MySQL-Datenbank ausgeführt wird. Die Situation wird noch wesentlich komplizierter, wenn das Speichersystem auf einem RAID-6-Array basiert und die Daten zusätzlich mit LUKS2-Verschlüsselung geschützt sind. Unter solchen Bedingungen liefern Standard-Wiederherstellungswerkzeuge nicht immer das erwartete Ergebnis, und unvorsichtige Aktionen können die Informationen dauerhaft zerstören. In diesem Artikel betrachten wir mögliche Szenarien von Datenverlust, die Besonderheiten der Arbeit mit RAID 6 und LUKS2 sowie den Prozess der Wiederherstellung einer MySQL-Datenbank nach dem versehentlichen Löschen von Dateien oder einer Festplattenpartition.

So stellen Sie eine MySQL-Datenbank nach dem Löschen von Dateien oder einer Partition unter Ubuntu wieder her: RAID 6 und LUKS2

MySQL-Datenbankdateien und ihre Sicherungen auf einem Linux-Server können aus verschiedenen Gründen unzugänglich werden: versehentliches Löschen von Dateien, Formatierung oder Löschen einer Partition, Beschädigung des Dateisystems, Ausfall des RAID-Arrays, Festplattenausfall oder Ausfall des RAID-Controllers. Die Situation wird noch komplizierter, wenn die Daten auf einer verschlüsselten LUKS2-Partition gespeichert sind.

Hetman RAID Recovery hilft beim Wiederherstellen von RAID-Array-Strukturen, beim Auffinden verlorener Partitionen, beim Entsperren von LUKS2, sofern das Kennwort verfügbar ist, sowie beim Wiederherstellen von Datenbankdateien und SQL-Dumps.

Wir demonstrieren das Programm auf einem Computer mit Windows. Hetman RAID Recovery ist jedoch auch für Linux und macOS verfügbar.

Zur Ansicht gehen
Gelöschte MySQL-Datenbank auf RAID 6 + LUKS2 wiederherstellen (Ubuntu)

Gelöschte MySQL-Datenbank auf RAID 6 + LUKS2 wiederherstellen (Ubuntu)

Vorbereitung der Testumgebung und der MySQL-Datenbank

Für die Tests verwendeten wir einen Server Dell PowerEdge R710 mit einem PERC H700-Controller.

Parameter Spezifikation
Servermodell Dell PowerEdge R710
Formfaktor Rack 2U
Prozessor Bis zu 2 × Intel Xeon der Serien 5500/5600
RAM DDR3 ECC, bis zu 288 GB (18 Steckplätze)
RAID-Controller Dell PERC H700
RAID-Typ Hardware-RAID
Unterstützte RAID-Level RAID 0, 1, 5, 6, 10, 50, 60
Array-Konfiguration RAID 6
Laufwerkschnittstelle SAS/SATA, bis zu 6 Gbit/s
Anzahl der Laufwerksschächte Bis zu 6 × 3,5″ oder 8 × 2,5″, je nach Konfiguration
Cache des RAID-Controllers 512 MB oder 1 GB (je nach Modell)
Cache-Schutz BBU — batteriegestützter Cache-Schutz
Betriebssystem Ubuntu Server
Datenverschlüsselung LUKS2 (auf Linux-Ebene, nicht auf dem RAID-Controller)
Datenbankmanagementsystem MySQL
RAID-6-Fehlertoleranz Ermöglicht den gleichzeitigen Ausfall von bis zu zwei Festplatten
Diagnosetools Dell OpenManage, MegaCLI, StorCLI (falls kompatibel)

Um dem Betriebssystem direkten Zugriff auf jede physische Festplatte zu ermöglichen, wurden auf dem Controller sechs einzelne RAID-0-Arrays erstellt — eines pro Festplatte. Auf einem davon wurde Ubuntu Server 24.04 installiert, und die anderen vier wurden über Cockpit zu einem softwarebasierten MD RAID 6-Array zusammengefasst.

Auf dem Array wurden eine GPT-Partitionstabelle und drei Partitionen erstellt, wobei als Dateisystem ext4 verwendet und für jede Partition LUKS2-Verschlüsselung ausgewählt wurde.

MDRAID-Gerät

Das Verzeichnis mysql-data wurde auf der dritten Partition platziert und enthielt Daten aus der Testdatenbank company_db, Systemdateien und MySQL-Protokolle. Verwendet wurde MySQL-Version 8.0.46.

Das Verzeichnis mysql-data mit Daten aus der Testdatenbank company_db

Die Datenbank selbst enthielt die Tabellen customers, products und orders sowie eine View, eine gespeicherte Prozedur und eine Funktion.

Die Datenbank enthält die Tabellen customers, products und orders

Die Sicherung der Datenbank wurde in MySQL Workbench als SQL-Dump erstellt und im Verzeichnis mysql-backups gespeichert.

Vor den Tests wurden die Verzeichnisse mysql-data und mysql-backups von der dritten auf die zweite Partition kopiert. Anschließend wurde die zweite Partition über Cockpit gelöscht, und die Datenbankdateien sowie der SQL-Dump wurden von der dritten Partition mit Shift + Entf gelöscht, also unter Umgehung des Papierkorbs. Dadurch wurden zwei Szenarien vorbereitet: Wiederherstellung von Dateien aus einer gelöschten Partition und Wiederherstellung gelöschter Dateien aus einer intakten Partition.

Die zweite Partition wurde über Cockpit gelöscht

Anschließen der Laufwerke zur Analyse

In unserem Fall wurden die an RAID 6 beteiligten Festplatten über eine USB-Dockingstation mit einem Windows-Computer verbunden, und Hetman RAID Recovery wurde zur Analyse gestartet.

Zur Datenwiederherstellung von ausgefallenen RAID-Arrays, NAS-Geräten und anderen Speichersystemen mit mehreren Festplatten.

Zusätzlich zur Arbeit mit physischen Festplatten unterstützt das Programm die Analyse vollständiger Byte-für-Byte-Festplattenabbilder. Solche Abbilder können direkt in Hetman RAID Recovery mit der Funktion Disk speichern erstellt und auf einem anderen funktionierenden Laufwerk gespeichert werden.

Hetman RAID Recovery: Disk speichern

Dies ist besonders nützlich, wenn die Festplatte instabil ist, fehlerhafte Sektoren aufweist oder Lesefehler erzeugt. Das Erstellen eines Abbilds bewahrt die lesbaren Daten und ermöglicht es, die Kopie später zu scannen, wodurch die Anzahl wiederholter Zugriffe auf die problematische Festplatte reduziert wird.

Wenn die Festplatten auf dem Linux-Server verbleiben und lesbar sind, können sie auch remote analysiert werden. Verbinden Sie sich dazu in Hetman RAID Recovery per SSH mit dem Server und greifen Sie auf dessen Blockgeräte zu.

So stellen Sie eine gelöschte MySQL-Datenbank aus RAID 6 + LUKS2 wieder her

SCHRITT 1. Automatische Erkennung von RAID-6- und LUKS-Partitionen

Unmittelbar nach dem Start erkannte Hetman RAID Recovery die Konfiguration des MD RAID 6 automatisch und rekonstruierte deren Struktur für die Analyse.

Zur Datenwiederherstellung von ausgefallenen RAID-Arrays, NAS-Geräten und anderen Speichersystemen mit mehreren Festplatten.
Hetman RAID Recovery: MD RAID 6-Konfiguration

Im rechten Bereich werden die Hauptparameter des Arrays angezeigt: RAID-Typ und -Status, Blockreihenfolge und -größe sowie die Liste der beteiligten Festplatten mit Reihenfolge, Offsets und Größen.

Hetman RAID Recovery: MD RAID 6-Konfiguration

Auf dem zusammengesetzten Array erkannte das Programm drei Partitionen, darunter auch die zuvor gelöschte zweite, und identifizierte auf allen drei LUKS-Verschlüsselung. Vor Eingabe des Kennworts werden deren Dateisysteme nicht angezeigt — die Partitionen müssen für die weitere Analyse entsperrt werden.

Die zweite Partition wird in der Benutzeroberfläche als nicht zugeordneter Speicherplatz mit der Kennzeichnung LUKS angezeigt. Das bedeutet, dass das Programm die Metadaten des verschlüsselten Containers an der Position der gelöschten Partition erkannt hat.

Hetman RAID Recovery: Das Programm erkannte drei Partitionen auf dem zusammengesetzten Array

SCHRITT 2. Entsperren und Wiederherstellen gelöschter Dateien

Um die Analyse zu starten, doppelklicken Sie auf die gewünschte Partition. Da sie mit LUKS2 verschlüsselt ist, fordert das Programm Sie auf, ein Kennwort einzugeben oder eine Schlüsseldatei anzugeben. Geben Sie das Kennwort ein und klicken Sie auf Entsperren.

Hetman RAID Recovery: Die Partition ist mit LUKS2 verschlüsselt

Wählen Sie zunächst Schnellscan. Warten Sie, bis der Scan abgeschlossen ist; danach öffnet das Programm die Struktur der gefundenen Verzeichnisse. In unserem Test fand der Schnellscan die erforderlichen Dateien auf der gelöschten Partition.

Wenn die erforderlichen Daten in Ihrem Fall nicht gefunden werden, kehren Sie zur Auswahl des Analysetyps zurück und führen Sie eine Vollanalyse aus, wobei Sie das Dateisystem EXT2/3/4 angeben.

Hetman RAID Recovery: Schnellscan auswählen

Überprüfen Sie die Scan-Ergebnisse. In unserem Fall zeigte das Programm den SQL-Dump backup1.sql, das Verzeichnis company_db sowie die MySQL-Tabellendateien mit der Erweiterung .ibd an. Der Inhalt des SQL-Dumps kann im Vorschaufenster überprüft werden.

Hetman RAID Recovery: SQL-Dump backup1.sql, Verzeichnis company_db und MySQL-Tabellendateien

Wählen Sie die Dateien und Ordner aus, die Sie wiederherstellen möchten, und klicken Sie dann auf Wiederherstellen. Wählen Sie eine Speichermethode, geben Sie eine andere physische Festplatte an und lassen Sie die Option zur Wiederherstellung der Verzeichnisstruktur aktiviert.

Speichern Sie die gefundenen Dateien nicht auf demselben Laufwerk, von dem sie wiederhergestellt werden, um ein Überschreiben anderer verlorener Daten zu vermeiden.

Hetman RAID Recovery: gefundene Dateien wiederherstellen

SCHRITT 3. Wiederherstellung der Datenbank aus einem SQL-Dump

Der einfachste Weg zur Wiederherstellung der Datenbank besteht darin, den wiederhergestellten SQL-Dump zu verwenden. Er enthält Befehle zum Erstellen der Datenbankstruktur und zum Wiederherstellen der Daten in dem Zustand zum Zeitpunkt der Erstellung der Sicherung. Wenn die entsprechenden Exportoptionen ausgewählt wurden, enthält der Dump auch Views, Prozeduren und Funktionen.

Starten Sie MySQL Workbench und verbinden Sie sich mit dem MySQL-Server. Öffnen Sie das Menü Server — Datenimport, wählen Sie Import aus eigenständiger Datei und geben Sie die wiederhergestellte SQL-Datei an.

MySQL Workbench: Server — Datenimport - Import aus eigenständiger Datei

Wenn das gesamte Verzeichnis mysql-data mit den MySQL-Systemdateien verloren gegangen ist, müssen Sie zuerst die Funktionsfähigkeit des Servers wiederherstellen oder eine neue MySQL-Instanz vorbereiten. Erst danach kann der Dump über Workbench importiert werden.

Wählen Sie das Zielschema aus oder erstellen Sie eine neue Datenbank company_db und klicken Sie dann auf Import starten. Warten Sie, bis der Vorgang abgeschlossen ist, und prüfen Sie das Protokoll auf Fehler.

MySQL Workbench: eine neue Datenbank company_db erstellen

Aktualisieren Sie die Schemaliste. Die Datenbank sollte nun die Tabellen customers, products und orders enthalten. Öffnen Sie sie und überprüfen Sie die Datensätze.

MySQL Workbench: Tabellen customers, products und orders

SCHRITT 4. Wiederherstellung der Datenbank aus physischen MySQL-Dateien

Wenn kein geeigneter SQL-Dump vorhanden ist, aber Hetman RAID Recovery das Wiederherstellen des Datenbankverzeichnisses mit den Tabellendateien ermöglicht hat, können Sie eine physische Wiederherstellung versuchen.

In unserem Fall blieben im Verzeichnis company_db die Dateien customers.ibd, products.ibd und orders.ibd erhalten. Jede von ihnen enthält die Daten und Indizes der entsprechenden InnoDB-Tabelle.

Dateien customers.ibd, products.ibd und orders.ibd

Das bloße Kopieren dieser Dateien in das MySQL-Verzeichnis reicht nicht aus. Der neue Server verfügt noch nicht über Definitionen der entsprechenden Tabellen im Data Dictionary. Daher besteht die Wiederherstellung aus zwei Schritten: Zuerst müssen Sie die Tabellenstruktur neu erstellen und anschließend die wiederhergestellten .ibd-Dateien daran anbinden.

Bereiten Sie für die Wiederherstellung einen funktionierenden Server mit derselben MySQL-Version vor. Verbinden Sie sich über Workbench mit ihm und erstellen Sie eine leere Datenbank.

Verbinden Sie sich über Workbench mit dem Server und erstellen Sie eine leere Datenbank

Wenn das ursprüngliche SQL-Skript mit der Struktur erhalten ist, führen Sie daraus die CREATE TABLE-Befehle aus. Die Tabellen müssen exakt den ursprünglichen entsprechen, einschließlich Spaltentypen, Schlüsseln, Indizes, Sortierfolge und Zeilenformat. Die Dateninfügungsbefehle müssen nicht ausgeführt werden — zu diesem Zeitpunkt müssen die Tabellen leer bleiben.

SCHRITT 5. Wiederherstellung der Tabellenstruktur aus ibd-Dateien

Wenn das ursprüngliche SQL-Skript nicht verfügbar ist, können Sie versuchen, die Tabellenstruktur aus den .ibd-Dateien wiederherzustellen. In MySQL 8.0 enthalten sie SDI — die Metadaten des Data Dictionary. Zum Auslesen wird das Dienstprogramm ibd2sdi verwendet.

Führen Sie es für jede wiederhergestellte Datei aus und speichern Sie die Ergebnisse im JSON-Format. In unserem Fall erhielten wir Metadaten aus customers.ibd, products.ibd und orders.ibd und verwendeten anschließend jq, um die Definition der Tabelle customers zu überprüfen.

ibd2sdi

Die Metadaten können den Tabellennamen, die MySQL-Version, die Storage Engine, die Sortierfolge und die Tablespace-Parameter enthalten. Sie enthalten auch die Spaltendefinitionen. Informationen zu Primär- und eindeutigen Schlüsseln, sekundären Indizes und Beziehungen zu anderen Tabellen werden separat gespeichert.

Das resultierende JSON kann manuell in einem Texteditor analysiert werden. Auf Basis der erkannten Parameter können spezielle Skripte und Konverter automatisch vorläufige CREATE TABLE-Befehle erzeugen. Bei einer großen Anzahl von Tabellen beschleunigt dies die Wiederherstellung der Struktur erheblich.

Die Metadaten können den Tabellennamen und die MySQL-Version enthalten

SCHRITT 6. Anbinden der wiederhergestellten ibd-Dateien

Deaktivieren Sie in Workbench vorübergehend die Prüfungen für Fremdschlüssel und führen Sie für jede erstellte Tabelle den Befehl ALTER TABLE … DISCARD TABLESPACE aus. Dadurch wird der erstellte leere Tablespace getrennt und die Tabelle für das Anbinden der wiederhergestellten Datei vorbereitet.

Deaktivieren Sie in Workbench vorübergehend die Prüfungen für Fremdschlüssel

Kopieren Sie danach die entsprechenden .ibd-Dateien in das Datenbankverzeichnis auf dem vorbereiteten Server. Vergessen Sie nach dem Kopieren nicht, den Dateien den Besitzer mysql zuzuweisen und die erforderlichen Zugriffsrechte festzulegen.

Kopieren Sie die entsprechenden .ibd-Dateien in das Datenbankverzeichnis auf dem vorbereiteten Server

Kehren Sie zu Workbench zurück und führen Sie für jede Tabelle ALTER TABLE … IMPORT TABLESPACE aus. Warnungen über fehlende .cfg-Dateien sind nicht kritisch: MySQL setzt den Import ohne automatische Strukturvalidierung fort. MySQL registriert die wiederhergestellten Tablespaces und bindet die Daten und Indizes an die zuvor erstellten Tabellendefinitionen an.

Kehren Sie zu Workbench zurück und führen Sie ALTER TABLE … IMPORT TABLESPACE aus

Nach erfolgreichem Import aktivieren Sie die Prüfungen für Fremdschlüssel wieder. Aktualisieren Sie die Schemaliste und überprüfen Sie die Anzahl und den Inhalt der Datensätze mit SELECT-Abfragen.

Nach erfolgreichem Import die Prüfungen für Fremdschlüssel aktivieren

Mit den .ibd-Dateien können Tabellen, ihre Daten und Indizes wiederhergestellt werden. Views, Prozeduren und Funktionen werden jedoch nicht als separate Dateien im Verzeichnis company_db gespeichert. Wenn sie nicht im SQL-Dump enthalten sind, müssen diese Objekte manuell neu erstellt werden.

Nach der Überprüfung der wiederhergestellten Datenbank empfehlen wir, eine neue Sicherung im Format SQL-Dump zu erstellen.

Fazit

Mit Hetman RAID Recovery war es möglich, die Struktur von Linux MD RAID 6 automatisch zu rekonstruieren und LUKS2-Container mithilfe des bekannten Kennworts zu erkennen und zu entsperren. Ein Schnellscan fand die erforderlichen Dateien sowohl nach deren Löschung als auch nach dem Löschen einer gesamten Partition.

Der wiederhergestellte SQL-Dump kann über MySQL Workbench importiert werden, wodurch die Datenbankstruktur und die Daten in den Zustand zum Zeitpunkt der Erstellung der Sicherung zurückversetzt werden. Falls kein geeigneter Dump verfügbar ist, können einzelne InnoDB-Tabellen aus .ibd-Dateien wiederhergestellt werden, indem zuvor ihre Struktur neu erstellt wird.

Glib Khomenko

Autor: , Technischer Schreiber

Hlib Khomenko ist Übersetzer und IT-Techniker im Unternehmen „Hetman Software“. Der Autor hat eine spezialisierte Hochschulausbildung und hat langjährige Erfahrung in der deutschen Übersetzung.

Alexandr Shafarenko

Editor: , Technischer Schreiber

Olexander Schafarenko hat langjährige Erfahrungen im Schreiben von Artikeln. Seine Artikel auf dem Blog wurden von Millionen von Benutzern gelesen. Der Autor hat eine spezialisierte Hochschulausbildung und teilt sein Wissen im Bereich IT mit den Lesern.

Für dich empfohlen