InnoDB: Database page corruption on disk or a failed

From CPanelDirect

Jump to: navigation, search

I have found Innodb is great - when it works. A nightmare when it breaks. MyISAM stores each mysql table in its own file. So each table gets a MYI, MYD and frm file, each in their mysql database name folder. Its downside is table locking. Innodb does not have the same locking so it can be faster, however everything, for every table, for every database is in one innodb file, so you can loose a lot more data.

Error

                      p cy VUx  ];InnoDB: End of page dump
090215  5:47:06  InnoDB: Page checksum 1056190913, prior-to-4.0.14-form checksum 2043565653
InnoDB: stored checksum 1580733393, prior-to-4.0.14-form stored checksum 2043565653
InnoDB: Page lsn 11 2027229789, low 4 bytes of lsn at page end 2027229789
InnoDB: Page number (if stored to page already) 259924,
InnoDB: space id (if created with >= MySQL-4.1.1 and stored already) 0
InnoDB: Page may be an update undo log page
InnoDB: Page may be an index page where index id is 0 26
InnoDB: (index PRIMARY of table mylhost_mylhost/layouts)
InnoDB: Database page corruption on disk or a failed
InnoDB: file read of page 259924.
InnoDB: You may have to recover from a backup.
InnoDB: It is also possible that your operating
InnoDB: system has corrupted its own file cache
InnoDB: and rebooting your computer removes the
InnoDB: error.
InnoDB: If the corrupt page is an index page
InnoDB: you can also try to fix the corruption
InnoDB: by dumping, dropping, and reimporting
InnoDB: the corrupt table. You can use CHECK
InnoDB: TABLE to scan your table for corruption.
InnoDB: See also InnoDB: http://dev.mysql.com/doc/refman/5.0/en/forcing-recovery.html
InnoDB: about forcing recovery.
090215  5:53:36 [Note] /usr/sbin/mysqld: Normal shutdown

Sounds bad. The innodb file was 5 GB in size. It failed running /admin/mycheck which is basically mysqlcheck on all tables.

The Fix

Edit /etc/my.cnf and add

       innodb_force_recovery = 4
       skip-networking

Take a mysqldump of everything (/admin/mysqldump -c in my case)

Rerun /admin/mycheck

This solved the issue for me and innodb was working again.

Personal tools