MySQL will mal wieder nicht

Neulich hatte ich mal wieder ein wunderbares Problem mit meiner kleinen Bastelstube. Reboot und alles war hin. Jedenfalls das Filesystem. Nachdem das ganze Teil eine Weile vor sich hingelaufen war (40 Tage), ich aber eigentlich nichts mit gemacht habe, versuchte ich herrauszufinden woran das ganze nun lag. Resultat war eine ganz hässliche Tabelle der testweise verwendeten Drupal-Installation. Diese war eigentlich ein Replikat einer Liveumgebung und dementsprechen groß. Vermutlich hatte auch der etwas unterbutterte Arbeitsspeicher dafür gesorgt, das das hungrige MySQL fleissig am Filesystem genagt hat.

Als Hinweis: auf dem PI läuft Raspbian

Nach dem ein Versuch das Filesystem zu retten schief lief (ich hatte einfach keine Lust 10 Tage+ zu warten) feuerte ich also ein Backup-Image auf die SD-Karte.
Resultat: MySQL wollte nicht mehr. War ja klar. Im Backup war auch die Datenbank enthalten, die das Ganze auszulösen schien.

Ein Blick in /var/log/daemon.log brachte dann die Lösung:

mysqld: InnoDB: You may have to recover from a backup.
mysqld: InnoDB: It is also possible that your operating
mysqld: InnoDB: system has corrupted its own file cache
mysqld: InnoDB: and rebooting your computer removes the
mysqld: InnoDB: error.
mysqld: InnoDB: If the corrupt page is an index page
mysqld: InnoDB: you can also try to fix the corruption
mysqld: InnoDB: by dumping, dropping, and reimporting
mysqld: InnoDB: the corrupt table. You can use CHECK
mysqld: InnoDB: TABLE to scan your table for corruption.
mysqld: InnoDB: See also http://dev.mysql.com/doc/refman/5.5/en/forcing-innodb-recovery.html

Genau diesen Link sollte man anschauen. Dort wird auf folgende Einstellung in der Config-File hingewiesen:

[mysqld]
innodb_force_recovery = 4

Also eintragen, MySQL starten mit:

/etc/init.d/mysql start

Und schon geht das Ganze erstmal und man kann seine Daten aus der DB holen. Schrieben wird jedoch schwierig solange innodb_force_recovery aktiviert ist.

Wie ihr MySQL wieder zum ordnungsgemäßen Betrieb bewegt, erfahrt ihr im .