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.

- Vorbereitung der Testumgebung und der MySQL-Datenbank
- Anschließen der Laufwerke zur Analyse
- So stellen Sie eine gelöschte MySQL-Datenbank aus RAID 6 + LUKS2 wieder her
- SCHRITT 1. Automatische Erkennung von RAID-6- und LUKS-Partitionen
- SCHRITT 2. Entsperren und Wiederherstellen gelöschter Dateien
- SCHRITT 3. Wiederherstellung der Datenbank aus einem SQL-Dump
- SCHRITT 4. Wiederherstellung der Datenbank aus physischen MySQL-Dateien
- SCHRITT 5. Wiederherstellung der Tabellenstruktur aus ibd-Dateien
- SCHRITT 6. Anbinden der wiederhergestellten ibd-Dateien
- Fazit
- Häufig gestellte Fragen
- Bemerkungen
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.
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.

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.

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

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.

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.
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.

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.

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.

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.

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.

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.

Ü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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.


