Skip to content

Latest commit

 

History

History
49 lines (33 loc) · 1.81 KB

README.md

File metadata and controls

49 lines (33 loc) · 1.81 KB

InnoDB_rs

InnoDB_rs is written to faciliate data recovery from accidentally deleted MySQL databases. But also serves as an implementation of InnoDB's storage engine in Rust.

Disclaimer

Project is currently under heavy development and in its early stages.

Building

Try building the tool (especially page_extractor) in release mode. The performance difference is non-trivial partially due to the Rust checked arithmetic in debug mode.

Usage

See the Wiki for usage / guide.

MySQL Support

This tool-set is develoed with MySQL 8.0, as that is the database I had to recover. Contribution to support older / newer version / table format is more than welcome.

Tools

InnoDB Page Extractor (page_extractor)

Page extractor is designed to scan a file (or even entire block device) for any InnoDB pages and extract them according to some rules.

Currently there are two extraction mode implemented:

  • Index Mode
  • Tablespace Mode

In Index Mode (default) the tool will examine all index pages, and extract them in a file that's named by their index_id. Output will be placed in output_dir/FIL_PAGE_INDEX with each file representing an index that the tool recovered.

In Tablespace Mode (--by-tablespace), it will try to store ALL page types and store them in output/BY_TABLESPACE. Each file representing a table space. (.ibd) file.

See --help for more information

InnoDB Index Explorer (page_explorer)

Page Explorer is used to explore "index pages". InnoDB stores data in it's primary key / index. When provided with a table definition, it can be used to dump full table from the primary index.

Sorting tablespace file

Table space can be sorted using a tool like innodb_sort