MySQL Tables reparieren
Nach ungeplanten Reboots (z.B. nach Abstürzen, Stromausfällen, etc.) sollte man mit mysqlcheck
nach dem Rechten sehen, um etwaige Probleme noch beheben zu können.
Die MySQL-Referenz geht im Detail auf alle Optionen des Tools ein, hier soll nur ein Schnelldurchlauf beschrieben werden.
Mit mysqlcheck -u root -p -c -A
kann man einen Quickcheck über alle Datenbanken mit allen Tables im System laufen lassen.
Die Meldungen verraten dann schonmal, ob und wenn ja, welche Probleme es gibt.
Das sieht dann z.B. so aus:
mysql.db OK mysql.user OK . . . mydb2.example OK mydb2.specialtable note : The storage engine for the table doesn't support check mydb2.table1 OK mydb2.table2 OK mydb2.table3 error : Key in wrong position at page 44032 error : Corrupt mydb2.table4 OK mydb2.table5 OK
Die Meldung (note) für den specialtable muss nicht irritieren, da einige Table-Typen von dieser mysqlcheck Version nicht überprüft werden können.
Da es in diesem Beispiel aber einen korrupten Table gibt, muss die repair-Option her:
Mit mysqlcheck -u root -p -r -A
werden Tables bei Bedarf repariert. Und im Optimalfall sieht das dann folgendermaßen aus:
mysql.db OK mysql.user OK . . . mydb2.example OK mydb2.specialtable note : The storage engine for the table doesn't support repair mydb2.table1 OK mydb2.table2 OK mydb2.table3 OK mydb2.table4 OK mydb2.table5 OK
Das mysqlcheck
Tool zuerst mit check Option laufen zu lassen macht also in jedem Fall Sinn, da man in dieser Konfiguration nur so zu sehen bekommt, dass es korrupte Tables gab.