Hier mal wieder eine ganz spezielle Fachfrage an die MySQL-Cracks:
Es geht um eine ISAM-Tabelle mit 16 Feldern und etwa 1 Mio. Datensätzen.
Sie hat den Hauptindex auf der Datensatz-ID und einen Zusatzindex auf dem Benutzer-Feld.
Die Abfrage erfolgt fast nie über die Datensatz-ID, sondern vorwiegend über das Benutzer-Feld.
Jetzt habe ich allerdings schon zum dritten Mal innerhalb von zwei Wochen den Hinweis bekommen, dass bestimmte Queries nicht möglich sind, da die Tabelle "marked as crashed" ist und repariert werden soll. Das geht ja normalerweise recht einfach:
> rcmysql stop
> myisamchk tabellenname.MYI
dann gucken - aha Fehler bei Record soundso
>myisamchk -r tabellenname.MYI
dann gucken - Fehler bei Record soundso behoben
Die Tabelle ist dann zwar ohne Fehlermeldung zu benutzen,
ABER es fehlen einfach die ganzen Datensätze ab dem defekten Record.
Zum Glück wird die Tabelle auf einen Slave repliziert, so dass ich sie von dort aus wieder herstellen kann. Sinn der Sache ist es aber nicht, da das System etwa eine halbe Stunde abgeschaltet werden muss!
Bei einem anderen Kunden hatte ich mich mal mit differenzierten Queries bis zur defekten Stelle vorgetastet und den betreffenden Datensatz gelöscht. Hier klappte das nicht.
Habt ihr einen Tipp, wie ich das Problem in Zukunft eleganter lösen kann?