Releases: ringo380/idb-utils
Releases · ringo380/idb-utils
v5.1.0
What's Changed
- feat: add crash recovery simulation (Epic #145) by @ringo380 in #196
- feat: add incremental backup analysis (Epic #146) by @ringo380 in #197
- feat: add index bloat scoring and cardinality estimation (Epic #147) by @ringo380 in #198
- feat: complete v5.1 milestone — verify backup-meta, audit bloat alerts, docs by @ringo380 in #199
Full Changelog: v5.0.0...v5.1.0
v5.0.0
What's Changed
- feat: v5.0 deep InnoDB internals — undo, LOB, binlog, spatial/FTS, ZSTD by @ringo380 in #184
- feat: add record undelete for recovering deleted InnoDB records by @ringo380 in #185
- Add GA4 analytics tracking to web UI by @ringo380 in #192
- feat: complete v5.0 milestone by @ringo380 in #195
Full Changelog: v4.0.2...v5.0.0
v4.0.2
What's Changed
- Bump chrono from 0.4.43 to 0.4.44 by @dependabot[bot] in #114
- Bump clap from 4.5.58 to 4.5.60 by @dependabot[bot] in #115
- Bump criterion from 0.5.1 to 0.8.2 by @dependabot[bot] in #116
Full Changelog: v4.0.1...v4.0.2
v4.0.1
What's Changed
Full Changelog: v4.0.0...v4.0.1
v4.0.0
What's Changed
- Add upgrade validation, backup verification, and live MySQL cross-validation (v4.0) by @ringo380 in #119
Full Changelog: v3.2.0...v4.0.0
What's Changed
- Add upgrade validation, backup verification, and live MySQL cross-validation (v4.0) by @ringo380 in #119
Full Changelog: v3.2.0...v4.0.0
What's Changed
- Add upgrade validation, backup verification, and live MySQL cross-validation (v4.0) by @ringo380 in #119
Full Changelog: v3.2.0...v4.0.0
v3.2.0
Added
inno auditsubcommand — New subcommand for directory-wide integrity scanning, health metrics, and checksum mismatch detection. Three modes: default integrity (inno audit -d <datadir>), health (--health), and mismatch listing (--checksum-mismatch). Scans.ibdfiles in parallel with rayon. Supports--json,--csv, and--prometheusoutput formats, threshold filters (--min-fill-factor,--max-fragmentation), and--keyringfor encrypted tablespaces.--audit-log <path>global flag — Structured NDJSON audit logging for write operations (repair, corrupt, defrag, transplant).AuditLoggerwith mutex + fs2 file locking,AuditEventtagged enum (session_start, page_write, file_write, backup_created, session_end).--prometheusflag oninno auditandinno health— Prometheus exposition format output for integration with textfile collectors. Per-file and directory-wide gauge metrics for pages, corruption, fill factor, fragmentation, garbage ratio, and scan duration.inno watch --events— Structured NDJSON change event stream. Emitswatch_start,page_change,watch_error, andwatch_stopevents with per-page detail (page type, LSN delta, checksum validity).inno repair --batch <dir>— Batch repair mode scanning a data directory for corrupt tablespaces and repairing them in parallel. Auto-detects checksum algorithm per file.BatchRepairReportJSON output with per-file results and summary.inno find --corrupt— Scan data directory for pages with checksum mismatches.--depthflag oninno find,inno tsid, andinno audit— Control recursive directory scanning depth. Default depth 2,--depth 0for unlimited,--depth Nfor N levels. Symlink loop detection via canonical path tracking.- Shell completion generation —
inno completions <shell>generates completions for bash, zsh, fish, and PowerShell viaclap_complete. - Web UI audit dashboard — New "Audit" tab in the web analyzer for multi-file integrity and health analysis. Drop 3+
.ibdfiles to see summary cards (total files, pages, corrupt pages, integrity %, avg fill factor), progress bars for integrity and fragmentation, and a sortable/filterable per-file detail table. - WASM
analyze_health()binding — New wasm-bindgen export for B+Tree health analysis from in-memory tablespace bytes. - New
src/util/prometheus.rsmodule with Prometheus exposition format helpers - New
src/util/audit.rsmodule withAuditLoggerandAuditEventtypes - New
web/src/components/audit.jsaudit dashboard component - 30+ new integration tests across audit, find, health, and watch test files
Changed
find_tablespace_files()rewritten with configurable depth and symlink loop safety viaHashSet<PathBuf>canonical path tracking- Web UI dropzone extended for 3+ file multi-drop (audit mode)
- Web UI tab bar conditionally shows Audit tab (keyboard shortcut: 0)
Full Changelog: v3.1.0...v3.2.0
v3.1.0
v3.0.0
Full Changelog: v2.1.0...v3.0.0
v2.1.0
Added
- Redo log analysis in web UI — New "Redo Log" tab auto-detects redo log files (
ib_logfile*,#ib_redo*) and displays file header, checkpoint slots, block-level analysis with filtering, and MLOG record type distribution. Uses the existingparse_redo_logWASM function. (Closes #21) - Export functionality — Download JSON and Copy to Clipboard buttons on every analysis tab. "Export All" button in the analyzer header runs all analysis functions and downloads a combined JSON file. Shared utilities in
web/src/utils/export.js. (Closes #31) - Page type heatmap — New "Heatmap" tab renders a canvas-based grid visualization of all pages, color-coded by page type. Three color modes: Page Type (categorical), LSN Age (blue-to-red gradient), and Checksum Status (green/red/gray). Supports mouse wheel zoom, click-and-drag pan, hover tooltips, and click-to-inspect navigation to the Pages tab. (Closes #25)
- Record-level INDEX page inspection — "View Records" button on INDEX pages in the Pages tab. Displays individual B+Tree record headers (type, heap number, n_owned, delete mark, min_rec, next offset) and raw hex bytes. Supports both compact (MySQL 5.0+) and redundant (pre-5.0) row formats. New
inspect_index_recordsWASM function. (Closes #23) - Encrypted tablespace support in web UI — Automatic encryption detection with keyring file upload banner. New
decrypt_tablespaceandget_encryption_infoWASM functions. Decrypted data is transparently passed to all analysis tabs. (Closes #29) - Redundant row format parsing — New
RedundantRecordHeaderstruct andwalk_redundant_records()function ininnodb::recordfor pre-MySQL 5.0 row format support. Parses 6-byte headers with n_fields, one_byte_offs flag, and absolute next-record offsets. - Accessibility improvements — ARIA
role="tablist"/role="tab"attributes with arrow key navigation,scope="col"on all table headers, skip-to-content link, keyboard shortcuts panel (?key),aria-liveannouncements for tab changes, focus-visible outlines, reduced-motion and high-contrast media queries, visible theme toggle button. (Closes #32) - MySQL 9.0/9.1 test fixtures and integration tests (compressed, multipage, standard, redo logs)
- Percona Server 8.0/8.4 test fixtures and integration tests
- MySQL 9.x redo log format support (version-conditional parsing for pre/post-8.0.30 layouts)
- Memory-mapped I/O (
--mmapflag) for large tablespace analysis - Streaming analysis mode (
--streamingflag) for memory-constrained environments - Criterion benchmarking infrastructure for core operations
- Docker image with multi-arch support and GitHub Actions workflow
- npm package for WASM module with TypeScript types
- deb and rpm package generation in release workflow
- AUR PKGBUILD for Arch Linux packaging
- Reference Homebrew formula for homebrew-core submission
- Git LFS tracking for binary test fixtures
- LICENSE file (MIT)
- 3 unit tests for redundant record header parsing and RecordHeader enum accessors
Changed
- BREAKING:
RecordInfo.headerchanged fromCompactRecordHeadertoRecordHeaderenum (wrappingCompactorRedundantvariants). Direct field access (e.g.rec.header.heap_no) must be replaced with accessor methods (e.g.rec.header.heap_no()). This enables unified handling of both compact and redundant row formats. PageType::Unknownnow carries original type code asUnknown(u16), preserving unrecognized page type values- Benchmarks use
iter_batchedinstead of cloning data insideb.iter()for accurate timing - Web UI tab bar now includes Heatmap (key 7) and conditionally shows Diff (key 8) and Redo Log (key 9)
- Diff view grid is now responsive (
grid-cols-1 md:grid-cols-2) - Keyboard shortcuts no longer fire when a
<select>element has focus
Fixed
- XSS in heatmap tooltip — numeric values (
page_number,lsn) are now escaped withesc() - Memory leak in heatmap —
mouseuplistener scoped to canvas instead of window, withmouseleavecleanup recovernow threadsvendor_infotovalidate_checksum(), fixing MariaDB full_crc32 recovery assessment- Bounds checks in
checksumandparseparallel paths prevent out-of-bounds access on truncated files find --firstfiles_searched counter correctly counts all opened files from parallel results- Progress bars in
checksum,parse, andfinddisplay during parallel work instead of after - Corrected
PageTypeenum values and added missing page types LogFileHeader::parse()version-conditional layout for pre-8.0.30 redo logs- CI test job fetches Git LFS objects for binary fixture files
Dependencies
rand0.9.2 → 0.10.0colored2.2.0 → 3.1.1indicatif0.18.3 → 0.18.4lz4_flex0.11.5 → 0.12.0ctrlc3.5.1 → 3.5.2actions/checkoutv4 → v6,actions/setup-nodev4 → v6actions/upload-artifactv4 → v6,actions/download-artifactv4 → v7actions/upload-pages-artifactv3 → v4,peter-evans/repository-dispatchv3 → v4
Full Changelog: v2.0.0...v2.1.0