Disfunctions.de

Das Blog der gnadenlosen Fehlfunktionen!

MySQL: Table is marked as crashed and should be repaired

Erstellt von Matthias am Montag 8. Juni 2009

So heute wollte ich dann doch mal ausprobieren wie man MYSQL Datenbanken repariert, wenn Sie kaputt gegangen sind.

Hintergrund: Vor ein paar Wochen ist mir die Datenbank von http://ksr-lm.de kaputt gegangen, ich hatte damals keine Zeit mich näher damit zu beschäftigen. Daher hab ich erst mal nur eine neue Datenbank erstellt und ein Backup reingeladen und die Website auf diese Datenbank umgeschaltet. Aber wie das halt als Admin so ist, man hat keine ganz aktuellen Backups und hat noch einiges an Arbeit um die Userdaten wieder aufzufrischen und so weiter. Deshalb wollte ich für die Zukunft die Datenbanken auch reparieren können und außerdem hab ich bei dem Mysql server mal aufgeräumt und über die Admin-Oberfläche von Webmin wollte er keine Defekten Datenbanken löschen.

Deshalb habe ich die folgende Lösung im Web mithilfe von Google gefunden.

klick mich! auf dem meiner Meinung nach gutem Blog von badmad

Das hat bei mir im Endeffekt dann auch geklappt, also nochmal kurz meine Vorgehensweise:

Da ich kein phpMyAdmin verwende, musste dieser Teil schon mal wegfallen, also putty geöffnet und los gings per ssh! Aber auch die Lösungsansätze danach haben mich nicht weiter gebracht, ich verwendete also myisamchk.

Also erst mal den Mysql Server herunterfahren, und damit mal ganz nebenbei 5 Webseiten und 1 Forum kurzerhand offline nehmen.


/etc/init.d/mysqld stop

und danach das folgende eingeben:

myisamchk /var/lib/mysql/ksr-lm/jos_session.MYI

Ausgegeben wird dann was in der Richtung:

Checking MyISAM file: /var/lib/mysql/ksr-lm/jos_session.MYI
myisamchk: warning: Table is marked as crashed
- check file-size
[…]
myisamchk: error: Recordlink that points outside datafile at 1,2,3,4
MyISAM-table 'jos_session.MYI' is corrupted
Fix it using switch "-r" or "-o"

Ok dann macht man genau das, was da gerade steht:

myisamchk -r /var/lib/mysql/ksr-lm/jos_session.MYI

Anschließend sollte dies ausgegeben werden:

recovering (with sort) MyISAM-table 'jos_session.MYI'
Data records: 27
Fixing index 1
Fixing index 2
Fixing index 3
Fixing index 4

Nun nochmal die ehemals zerstörte Tabelle prüfen mit

myisamchk /var/lib/mysql/ksr-lm/jos_session.MYI

Da kein Fehler mehr kommt, kann man den mysql Server wieder mit dem Befehl

/etc/init.d/mysql start

hochfahren, nun sollte alles wieder einwandfrei funktionieren.

Kommentar schreiben

XHTML: Sie können diese Tags benutzen: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>