Beschädigte MySQL Tabellen retten

Anfang der Woche ist mein Server zwei mal kurz hintereinander ausgefallen. Beim ersten Mal dachte ich noch, dass es irgendwie am Update, welches ich ein paar Tage zuvor eingespielt hatte liegen könnte, doch als er dann nach einem Tag wieder "tot" war, fand ich es schon etwas merkwürdig.

Nach dem ich dann beim zweiten Mal meine Log-Dateien durchgeschaut hatte, ist mir aufgefallen, dass unter anderem der MySQL Server meldete, dass in dem Datenbank Verzeichnis kein Platz mehr sei. Und siehe da, die Festplatte war voll. : Also hab ich ein bisschen Platz auf der Festplatte gemacht und danach lief alles wieder. Naja, sagen wir fast alles, mein Blog wollte nicht starten. Grund war, dass die MySQL Datenbank für diesen kaputt war. Jetzt stand ich vor der Frage, was ich jetzt machen sollte, um nicht noch mehr Schaden anzurichten?

Nach kurzer Suche bin ich auf das Tool myisamchk gestoßen. Dieses Tool kann die Tabellen einer Datenbank optimieren, prüfen und reparieren.

Zum prüfen der Tabellen muss in das Verzeichnis in das MySQL seine Daten ablegt gewechselt werden. Unter Linux befindet es sich meistens im Verzeichnis /var/lib/mysql//. In diesem Verzeichnis wird dann folgender Befehl ausgeführt.

$ myisamchk -c *.MYI

Mit diesem werden alle Tabellen der Datenbank geprüft. Während seiner Ausführung gibt wird etwas in folgender Form zurück gegeben.

$ myisamchk -c *.MYI
Checking MyISAM file: tabelle.MYI
Data records:     691   Deleted blocks:       0
- check file-size
- check record delete-chain
- check key delete-chain
- check index reference
- check data record references index: 1
- check data record references index: 2
- check record links

Sollte jetzt ein Fehler aufgetreten sein, kann die Tabelle mit folgenden Befehlen repariert werden.

$ myisamchk -r tabelle.MYI

oder

$ myisamchk -o teablle.MYI

Der Unterschied zwischen den beiden Befehlen ist der Vorgang, wie repariert wird. Wird mit Angabe des Parameters -o repariert, dauert der Vorgang zwar länger, es werden aber unter Umständen mehr Daten wieder hergestellt als bei dem etwas schnelleren Reparierverfahren, welches mit -r ausgewählt wird.

Wird myisamchk mit dem Parameter --help aufgerufen, wird zu jedem Parameter eine kleine Hilfe angezeigt.

Eigentlich würde ich an dieser Stelle viel Spaß beim ausprobieren wünschen. Aber ich hoffe, dass niemand in der missliche Lage kommt, seine MySQL Tabellen reparieren zu müssen und wenn doch, dann hoffe ich, dass es auch so gut ausgeht wie bei mir.

Verwandte Artikel