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.
Project is currently under heavy development and in its early stages.
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.
See the Wiki for usage / guide.
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.
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
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.
Table space can be sorted using a tool like innodb_sort