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.