myisamchk nur kaputte Tabellen reparieren

cirox
Posts: 212
Joined: 2006-05-08 23:20
Location: Berlin

myisamchk nur kaputte Tabellen reparieren

Post by cirox »

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

Code: Select all

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: Select all

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

aubergine
RSAC
Posts: 475
Joined: 2005-09-10 17:52
Location: Frankfurt am Main

Re: myisamchk nur kaputte Tabellen reparieren

Post by aubergine »

Was soll es an einer Tabelle die OK. ist zu reparieren geben?

=> http://dev.mysql.com/doc/refman/5.1/de/myisamchk.html
Top

cirox
Posts: 212
Joined: 2006-05-08 23:20
Location: Berlin

Re: myisamchk nur kaputte Tabellen reparieren

Post by cirox »

Das hat mich zum Ziel gebracht

Code: Select all

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