InnoDB: Database page corruption on disk or a failed

From CPanelDirect
Jump to: navigation, search

Under Construction! Please Visit Reserve Page. Page Will Be Available Shortly


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.



                     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: InnoDB: about forcing recovery. 090215 5:53:36 [Note] /usr/sbin/mysqld: Normal shutdown </pre>

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

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.