Comment 3 for bug 1006095

Revision history for this message
Raghavendra D Prabhu (raghavendra-prabhu) wrote :

@Jsynder, Purge is failing becuase you may have a corrupted secondary index,

you can get its name from

select IST.SCHEMA, IST.NAME, ISI.NAME from INNODB_SYS_TABLES IST INNER JOIN INNODB_SYS_INDEXES ISI ON IST.TABLE_ID = ISI.TABLE_ID and ISI.INDEX_ID=4390;

The message is because of this change http://sprunge.us/DggK?c from bug -- http://bugs.mysql.com/bug.php?id=61104

That is -- an assertion failure was replaced by an if condition so that the index can be fixed and the the vicious loop of crash -> start -> purge -> crash be avoided. (you can see that in the last message in that bug)

The solution proposed there is to DROP/CREATE that particular INDEX or mysqldump and recreate that particular table if corruption is more severe.

Until you do that you can prevent purge buffering by setting http://dev.mysql.com/doc/refman/5.5/en/innodb-parameters.html#sysvar_innodb_change_buffering variable to inserts.

"InnoDB: record PHYSICAL RECORD: n_fields 4; compact format; info bits 32" -- the info bits == 32 suggests that the record is delete marked, so you are hitting "page_get_n_recs(page) <= 1"