Corrupted innoDB on linux ext4, data recovery

Published Date: 2021/11/26 by: DaVieS

Corrupted innoDB on linux ext4, data recovery
Corrupted innoDB on linux ext4, data recovery

I could say I saw a everthing but not, here is the case:

There is a VM Host with ZFS Storage, direct attached, and there is a Linux VPS with ext4 filesystem, running mySQL Database.

Without sign of error, suddenly the VPS kernel log started spamming:

[23564.244561] blk_update_request: I/O error, dev vda, sector 960227912
[23564.375360] blk_update_request: I/O error, dev vda, sector 960227912

and things went south... The database server has corrupted and fails to start, crash or hung up immediately.
So recovering the mySQL's InnoDB (.ibd) files was very challenging, there was no luck with dd, ddrescue, so wrote a software that could help.

So the mistery,
 - Physical HDDs are OK
 - ZFS with checksuming: No Error
 - qemu-img check: OK
 - fsck on the Guest: OK
 - mounting .qcow2 file on the VM Host, OK bad drive, sector error.

This is the first time that I saw a sector error on a virtual HDD with excellent underlaying storage.
My guess is the ext4 corrupted and the kernel showing a misleading error message after NULL read.

 

The InnoDB recovery procedure was the following:

  1. Attached a new disk with clean and fresh filesystem
  2. Moved all database files that could be accessed and did not throw I/O Error into the new partition
  3. Any other files which are thrown errors and could not been completely restored, rescued by the software I made
    The software reads the file regardless of I/O errors, if a bad block unavailable it can be replaced by any character, in case of innoDB I prefferred 0x00 and 0x0D (some case 0x00 caused errors).
  4. This method shown only 1-2 pages were lost on each broken file, one page is 16K, so the files were restored about 99.9% integrity.
  5. mySQL is a damn sensitive thing, after the restoration its the mySQL database server started and ran well, until reached a damaged page and crashed with buffer overflow.
  6. Here is the another magic thing, mySQL innoDB allows that you can DUMP the whole thing ANYWAY! To perform this action, innodb_recovery_mode = 6 should be set on configuration file.
  7. Dumped the whole database without a single missing row!
  8. Restored from dump, and running flawlessly.

 

This is how you can restore innoDB or any file from corrupted Disk.


That was an insane s@&k however a good thing in a bad story, we got richier by another software for data recovery.

https://github.com/DaVieS007/Partial-File-Recovery

 



If you like the article then don't forget to share!


Is Rust better than C/C++ ?

Rust is relatively new programming language which offers full memory management and garbage collection, while C/C++ already has a decent history..


Network Update

Proudly announcing that in the past days we expanded our infrastructure and our services will become more stable and quickier at us west, us..


Windows 10/11 Disable Search and annoyings on start menu

The one of the most irritative feature on windows is a "new" start menu which sends every input into Microsoft related services. Also if you have..


BVCP 2.0.x Released

Our one of the most popular FREE-TO-USE Software BVCP reached the next milestone.Big thanks to the active community, a ton of feedbacks received..


Welcome 2024

We have been busy at 2023. Im personally very happy to see a lot of new technologies especially EV related researches.We continued to support our..


FreeBSD 14 fresh install breaks mc (Midnight Commander) subshell support

We are very happy to announce that - if you did not know already - one of the best Operating System released a new version. FreeBSD 14. This..


ZFS Replication Software

  While we are working on BVCP 2.0 just another software made to handle ZFS Replications over multiple nodes. The software yet not released..


Bhyve UEFI drops into EFI shell, Linux wont boot Easy Workaround

  EFI works that way that the installer places a file into a FAT32 partition in a regular directory as called "BOOT". The usual full path of..


Nexus Datalogger 2023

We're proudly present that we released out our next version of datalogger software as commerical product. Our first version of Datalogger..

All rights reserved nPulse.net 2009 - 2024
Powered by: MVCP2 / BVCP / ASPF-MILTER / PHP 8.3 / NGINX / FreeBSD