Bei Problemen mit MySQL bzw. MariaDB kann einer der Fehler ein korrupter Index oder eine korrupte Tabelle sein. Es gibt einige Beschreibungen wie das zu beheben ist und die meisten gehen davon aus, dass der Server noch startet. Wenn das nicht mehr funktioniert, dann kann die Fehleranalyse nervenaufreibend sein.
Ein erster Schritt (nach einem Backup), um die Daten zu retten ist die Option innodb_force_recovery
. Damit kann der Datenbankserver in kleinen Schritten ohne bestimmte Funktionen gestartet werden. Am besten ist es schrittweise den Wert in der (üblicherweise) my.cnf zu erhöhen, denn mit jeder höheren Zahl steigt das Risiko noch mehr Daten zu verlieren.
Sobald der Server wieder startet können die Daten mit mysqldump
gesichert werden. Dabei werden dann auch die korrupten Tabellen wieder einen Fehler erzeugen. mit der Option --force
kann der Dump trotzdem soweit wie möglich erzeugt werden. Mit etwas Glück können vielleicht auch mehr Daten gerettet werden, wenn die Fehlermeldung den genauen Datensatz anzeigt. Dann kann eventuell eine einfache Select nach diesem Datensatz die Daten retten und den Verlust weiter minimieren.
Dann muss der Server gestoppt werden und alle ib_data, ib_logfiles sowie die eigenen Tabellen (Verzeichnisse) gelöscht werden. In der Regel liegen diese unter /var/lib/mysql
. Der Wert für innodb_force_recovery wird wieder auf 0 gesetzt und der Server wieder gestartet. Wenn alles wieder funktioniert, dann können die Tabellen zuerst neu erstellt und dann importiert werden.