REPAIR TABLE mit Cronjob?!

REPAIR TABLE mit Cronjob?!

am 05.07.2006 10:17:35 von s.koenig

Am Wochenende ist eine wichtige Tabelle eine Web-Applikation gecrasht,
d.h. Mysql lieferte den Fehlercode #144. Durch ein einfaches REPAIR
TABLE XY habe ich am Montag die Tabelle erfolgreich reparieren können.

Da ich in Zukunft vermeiden möchte, dass vor Allem am Wochenende ein
solcher Crash dazu führt, dass der Service lahmgelegt ist, frage ich
mich ob es Sinn macht routinemäßig jede Stunde einen Cronjob zu setzen
der alle Tabellen auf erfolgreichen Zugriff überprüft und ggf. ein
repair automatisch durchführt. So würde eine gecrashte Tabelle für
maximal 1 Stunde lahmgelegt sein.

Macht sowas Sinn oder gibt es einen besseren Weg?


Stefan

Re: REPAIR TABLE mit Cronjob?!

am 06.07.2006 00:21:20 von Axel Schwenke

Stefan könig wrote:

> Am Wochenende ist eine wichtige Tabelle eine Web-Applikation gecrasht,
> d.h. Mysql lieferte den Fehlercode #144. Durch ein einfaches REPAIR
> TABLE XY habe ich am Montag die Tabelle erfolgreich reparieren können.

Da läuft irgendwas schief. Error 144 ist "Table is crashed and last
repair failed". D.h. irgendwer (wer?) hat versucht die Tabelle zu
reparieren (warum?) und dabei ist was schiefgegangen (was?). Es scheint
also schon irgendeinen AUTO-REPAIR Job zu geben. Nur daß der nicht
funktioniert. Das solltest du erstmal eruieren. Ein volles REPAIR
braucht auch gern mal etwas Plattenplatz. Erst letztens war jemand
hier, dessen REPAIRs wegen knappen Plattenplatzes fehlschlugen.

Außerdem gehen MyISAM-Tabellen nicht einfach so grundlos kaputt. Hast
du vielleicht ein Problem mit Server-Crashs? Mal so als Anhaltspunkt,
was du so nachsehen wollen könntest:



> Da ich in Zukunft vermeiden möchte, dass vor Allem am Wochenende ein
> solcher Crash dazu führt, dass der Service lahmgelegt ist, frage ich
> mich ob es Sinn macht routinemäßig jede Stunde einen Cronjob zu setzen
> der alle Tabellen auf erfolgreichen Zugriff überprüft und ggf. ein
> repair automatisch durchführt. So würde eine gecrashte Tabelle für
> maximal 1 Stunde lahmgelegt sein.
>
> Macht sowas Sinn oder gibt es einen besseren Weg?

Kommt drauf an. Während eines REPAIR TABLE hat deine Maschine ganz
schön zu rödeln. Schon CHECK TABLE ist nicht ganz unproblematisch.
Man möchte so etwas lieber in einer verkehrsarmen Zeit machen. Das
wäre dann ein Argument für einen Cronjob. Vielleicht täglich.

Wenn es darum geht, die Nichtverfügbarkeit möglichst kurz zu halten,
bietet sich das automatische Recovery für MyISAM Tabellen an.



Nur kann das auch nicht hexen. Wenn beim REPAIR die Platte voll
läuft, kommt am Ende auch eine Tabelle mit Error 144 dabei raus.

Oberste Priorität sollte aber das Finden und Beheben des Problems
sein, das dir ständig kaputte Tables beschert. Wenn der Motor in
deinem Auto stottert packst du dir ja auch keine 10 Säcke Zement
in den Kofferraum, um notfalls genug Schwungmasse zu haben bis
der Motor wieder anspringt.

PS: in meiner Zeit bei wbocvybg habe ich Datenbanken mit 30GB in
ca. 100 MyISAM Tabellen am Start gehabt. Die sind Monate ohne
Probleme durchgelaufen. Also geht das mit MySQL, wenn man sich
ein bisschen anstrengt.


XL