myisamchk corrupte Tabellen herausfinden und nur diese reparieren

cirox

Registered User
Nach einem MySQL ServerAbsturz möchte ich nun nur!die kaputten Tabellen reparieren von ungefähr 250 Datenbanken. Ein

Code:
mysqlcheck --all-databases --auto-repair --extended --optimize -uroot -p

hat schon mal gar nichts gebracht. Hier ist alles ok :?:

Die kaputten Tabellen werden aber als "is marked as crashed" in phpMyAdmin angezeigt und sind "in Benutzung". Das einzig funktionierende zum Überprüfen - also alles in einem Rutsch - scheint zu sein auf der Shell:

Code:
for i in `find /var/lib/mysql/ -type f -name \*.MYI`; do myisamchk ${i}; done

Jetzt erscheinen in der Standardausgabe auch die ganzen fehlerhaften Tabellen. Wie kann ich den Befehl mit der for - do Schleife so abändern, dass er automatisch die kaputten (marked as crashed oder ähnlich) Tabellen repariert? Ein "myisamch -r" würde ja alle Tabellen reparieren und nicht nur die Kaputten. Ein "myisamchk --auto-repair" hab ich nicht gefunden.

PS:

1. Was ich auch nicht verstehe ist: Warum sendet mir das debian mysql Start Script eine detaillierte Zusammenfassung welche Tabelen "corrupt" sind mittels "mysqlcheck" und der Befehl siehe oben! sagt, dass alles ok ist. :?:

2. Bekommt man unter debian nicht nach jedem (re)Start so eine Mail? Wie kannich das debuggen, wenn nichts ankommt. Also die Mail wird gar nicht an (mailx) übergeben.
 
Code:
/etc/init.d/mysql stop
myisamchk --fast --force --update-state /var/lib/mysql/*/*.MYI
/etc/init.d/mysql start

huschi.
 
thx, das wars. Ich musste nur die Schleife wieder aufbauen, da die Argumentenliste zu lang war.

Code:
for i in `find /var/lib/mysql/ -type f -name \*.MYI`; do myisamchk --fast --force --update-state ${i}; done
 
Back
Top