A solution for MySQL Assertion failure FIL_NULL

Mysql screenshot

A defective RAM module recently caused data corruption in MySQL tables. MySQL would log the following to /var/log/syslog  in regular intervals, about every few minutes:

Reading MySQL documentation and various blogs didn’t help much. I ran CHECK TABLES  on all the tables and they all reported OK. Then I ran

and still all tables reported OK. Nevertheless the Assertion Failures continued. Then I stumbled across this excellent blog post, which suggested to dump evertying into a .sql file, wipe /var/lib/mysql (not without making a backup, mind you!), and re-import everything from scratch. This is what I did and it worked.

I recorded the passwords for each database and collected it into a SQL script like this:

When you dump all databases into a .sql file, it will not dump the permissions, so you will need to restore them later with this script. Next, the dumping part, then removal and reinstallation of mysql (Danger here: When you remove mysql-server, all packges which depend on it also will be removed!):

Here, I had to reset the MySQL admin password because it didn’t work any more, so I ran:

Then, I re-imported all databases from the dump file:

Then I run the SQL permission script that I mention above.

For me, this resulted in no more Assertion Failures. Yay!

 

 

,

Trackbacks/Pingbacks

  1. Adventures with various Segfaults due to defective RAM | Michael FranzlMichael Franzl - January 25, 2014

    […] my case however, the segfaults corrupted MySQL tables, which I had to clean up. Read here how to do […]

Leave a Reply

Powered by WordPress. Designed by Woo Themes