I use:
- 5.1.63-0ubuntu0.11.10.1
- Apache/2.2.20 (Ubuntu)
- MySQL client version: 5.1.63
The system is continuously displaying the following error during reading data from a MySQL database:
InnoDB: Database page corruption on disk or a failed
InnoDB: file read of page 387794.
After rebooting the system, I can regain access to the database and read
the "problematic" data without any problem for a few minutes or hours until
the same problem re-appears (for different data read attempts).
Any idea on the source of the problem?
- I have checked the HDD with S.M.A.R.T utility and I could not find any problem.
- I deactivate
AppArmor
without any result. - I also tried
SQL_NO_CACHE
option in the query without any result
120918 13:07:06 InnoDB: Page checksum 3504102879, prior-to-4.0.14-form checksum 1216630776
InnoDB: stored checksum 2100325079, prior-to-4.0.14-form stored checksum 1216630776
InnoDB: Page lsn 2 1168743501, low 4 bytes of lsn at page end 1168743501
InnoDB: Page number (if stored to page already) 387794,
InnoDB: space id (if created with >= MySQL-4.1.1 and stored already) 0
InnoDB: Page may be an index page where index id is 0 175
InnoDB: (index "PRIMARY" of table "OII"."dataset_cs_1")
InnoDB: Database page corruption on disk or a failed
InnoDB: file read of page 387794.
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 http://dev.mysql.com/doc/refman/5.1/en/forcing-innodb-recovery.html
InnoDB: about forcing recovery.
InnoDB: Ending processing because of a corrupt database page.
120918 13:07:07 [Note] Plugin 'FEDERATED' is disabled.
120918 13:07:07 InnoDB: Initializing buffer pool, size = 64.0M
120918 13:07:07 InnoDB: Completed initialization of buffer pool
InnoDB: Log scan progressed past the checkpoint lsn 2 2380293142
120918 13:07:07 InnoDB: Database was not shut down normally!
InnoDB: Starting crash recovery.
InnoDB: Reading tablespace information from the .ibd files...
InnoDB: Restoring possible half-written data pages from the doublewrite
InnoDB: buffer...
InnoDB: Doing recovery: scanned up to log sequence number 2 2380293162
120918 13:07:07 InnoDB: Started; log sequence number 2 2380293162
120918 13:07:07 [Note] Event Scheduler: Loaded 0 events
120918 13:07:07 [Note] /usr/sbin/mysqld: ready for connections.
Version: '5.1.63-0ubuntu0.11.10.1' socket: '/var/run/mysqld/mysqld.sock' port: 3306 (Ubuntu)
Best Answer
Rebooting temporarily clears the problem, and the error moves around... this strongly points to defective system RAM causing corruption of the OS cache.
You likely already know this part, but with Ubuntu, on startup, select "Memory test (memtest86+)" to verify. If you don't normally see the GRUB boot menu, you should be able to hold left-shift as it first starts up.