@ringo380/innodb-utils
v4.0.2
Published
InnoDB file analysis toolkit - WebAssembly module
Maintainers
Readme
@ringo380/innodb-utils
InnoDB file analysis toolkit compiled to WebAssembly.
Installation
npm install @ringo380/innodb-utilsUsage
With a bundler (Webpack 5+, Vite, Rollup with WASM plugin):
import { get_tablespace_info, validate_checksums } from '@ringo380/innodb-utils';
const fileBuffer = await fetch('table.ibd').then(r => r.arrayBuffer());
const data = new Uint8Array(fileBuffer);
const info = JSON.parse(get_tablespace_info(data));
console.log(`Page size: ${info.page_size}, Pages: ${info.page_count}`);
const checksums = JSON.parse(validate_checksums(data));
console.log(`Valid: ${checksums.valid_pages}/${checksums.total_pages}`);The WASM module is automatically initialized by the bundler — no init() call needed.
Available Functions
All functions accept a Uint8Array of the file contents and return a JSON string.
get_tablespace_info(data)- Basic tablespace metadataparse_tablespace(data)- Page-by-page header detailsanalyze_pages(data, page_number)- Detailed page analysis (pass-1nfor all pages)validate_checksums(data)- Checksum validation for all pagesextract_sdi(data)- Extract SDI metadata from MySQL 8.0+ tablespaceshex_dump_page(data, page_number, offset, length)- Hex dump of page bytesassess_recovery(data)- Recovery assessmentdiff_tablespaces(data1, data2)- Compare two tablespace filesparse_redo_log(data)- Parse InnoDB redo log filesinspect_index_records(data, page_number)- Inspect records on INDEX pagesdecrypt_tablespace(data, keyring)- Decrypt encrypted tablespaceget_encryption_info(data)- Get encryption metadata
BigInt Parameters
Some functions accept i64 or u64 parameters that map to JavaScript BigInt values.
For example, analyze_pages expects a BigInt page number:
// Analyze all pages
const all = JSON.parse(analyze_pages(data, -1n));
// Analyze a specific page
const page3 = JSON.parse(analyze_pages(data, 3n));License
MIT
