Skip to content

Commit c242f9a

Browse files
authored
Merge pull request #38 from Mazizova/add-przemek-malkowski-tools
Add gcache-inspector, binlogsum, redactsql, and innodump to the catalog
2 parents 2b49a7d + 16645bf commit c242f9a

4 files changed

Lines changed: 76 additions & 0 deletions

File tree

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
---
2+
title: "binlogsum"
3+
link: "https://github.com/PrzemekMalkowski/binlogsum"
4+
description: "A summarizer for decoded MySQL and MariaDB binary logs — turns mysqlbinlog output into per-table write statistics, GTID/transaction ranges, and writes-over-time histograms for diagnosing replication delay and unusual write activity."
5+
subcategories:
6+
- Monitoring & Observability
7+
- Replication & High Availability
8+
compatibility:
9+
- MySQL
10+
- MariaDB
11+
deployment:
12+
- Self-Hosted
13+
pricing:
14+
- Open Source
15+
---
16+
17+
binlogsum reads the decoded output of `mysqlbinlog` and reports on what actually happened in a given window of binary log activity: time range covered, server versions and per-server event counts, GTID and transaction ID ranges, a breakdown of query types, and which tables received the most writes and when. It distinguishes tables that were actually updated in a transaction from ones merely referenced, and surfaces the original SQL when `binlog_rows_query_log_events` is enabled — useful for tracing down the cause of a replication lag spike or an unexpected burst of writes.
18+
19+
It supports both ROW and STATEMENT binlog formats and can output a terminal report with Unicode histograms, an interactive web UI with zoomable graphs, or a self-contained HTML snapshot for sharing. Like the author's other tools, it's pure Go with no external dependencies, built as a single static binary.
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
---
2+
title: "gcache-inspector"
3+
link: "https://github.com/PrzemekMalkowski/gcache-inspector"
4+
description: "An offline reader for Galera's write-set cache (GCache) files on Percona XtraDB Cluster and MariaDB Galera Cluster, summarizing per-table activity and decoding write-sets into row-level output without a database connection."
5+
subcategories:
6+
- Monitoring & Observability
7+
- Replication & High Availability
8+
compatibility:
9+
- MariaDB
10+
- Percona Server
11+
- Galera
12+
deployment:
13+
- Self-Hosted
14+
pricing:
15+
- Open Source
16+
---
17+
18+
gcache-inspector parses Galera's GCache write-set cache files directly, without connecting to a running cluster, which makes it useful for diagnosing replication issues on nodes that are stopped, crashed, or otherwise unreachable. It identifies which tables were modified, attributes each write-set to its Galera sequence number, and derives timestamps from the binlog commit data embedded in the cache — producing an activity summary of inserts, updates, deletes, DDL, and bytes per table.
19+
20+
For deeper inspection, it can decode individual write-sets into row-level output comparable to `mysqlbinlog`, with a seqno range selector for targeting specific spans of activity. It auto-detects MySQL v2 vs. MariaDB v1 row event formats rather than assuming a fixed layout, and supports encrypted caches via keyring files or HashiCorp Vault. It's a static Go binary with no external dependencies.
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
---
2+
title: "innodump"
3+
link: "https://github.com/PrzemekMalkowski/innodump"
4+
description: "An offline reader for InnoDB tablespace files (.ibd, ibdata1) across MySQL 5.6–8.4 and MariaDB — reconstructs CREATE TABLE statements and extracts row data via direct B+tree traversal, without a running database server."
5+
subcategories:
6+
- Backup & Recovery
7+
compatibility:
8+
- MySQL
9+
- MariaDB
10+
deployment:
11+
- Self-Hosted
12+
pricing:
13+
- Open Source
14+
---
15+
16+
innodump reads InnoDB tablespace files — file-per-table `.ibd` files or the shared `ibdata1` — directly off disk, reconstructing `CREATE TABLE` statements from embedded SDI dictionary information or `.frm` files, then walking the B+tree to extract row data. It handles every InnoDB row format (DYNAMIC, COMPACT, REDUNDANT, COMPRESSED) and understands `INSTANT ADD/DROP COLUMN` history, and can recover deleted-but-not-yet-purged rows with a `--deleted-only` flag. Output is either SQL `INSERT` statements or MySQL Shell-compatible TSV, for a single file or recursively across a directory, with a `--skip-corrupted` option to tolerate damaged pages.
17+
18+
It's explicitly read-only and, per the author, "not a backup tool" — it's meant for consistent snapshots (a stopped server, `FLUSH TABLES ... FOR EXPORT`, or an existing backup), offering best-effort data recovery from files that are no longer attached to a live server, not a substitute for one that is. Written in Go with no external dependencies, GPL-3.0-or-later licensed.
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
---
2+
title: "redactsql"
3+
link: "https://github.com/PrzemekMalkowski/redactsql"
4+
description: "A local SQL schema anonymizer for MySQL/MariaDB and PostgreSQL — replaces table, column, index, and constraint names with neutral placeholders while preserving structure, so dumps can be shared safely for debugging or bug reports."
5+
subcategories:
6+
- Security
7+
- Schema Management & Migration
8+
compatibility:
9+
- MySQL
10+
- MariaDB
11+
deployment:
12+
- Self-Hosted
13+
pricing:
14+
- Open Source
15+
---
16+
17+
redactsql anonymizes a SQL schema — tables, columns, indexes, constraints, sequences, and types — replacing anything that could leak proprietary naming or business context with generic placeholders, while keeping foreign-key relationships and overall schema topology intact. That makes it possible to share a real dump for debugging, documentation, or a public bug report without exposing what a company's schema actually says about its product or data. Well-known system schemas (`public`, `pg_catalog`, `mysql`, `sys`, and similar) are left untouched.
18+
19+
It handles MySQL/MariaDB (backtick quoting, engine-specific syntax) and PostgreSQL (sequences, custom types, dollar-quoted strings) dialects, auto-detecting which one it's looking at or accepting an explicit `-dialect` flag. Everything runs locally — nothing is transmitted or stored externally — either through a local web UI at `127.0.0.1:8585` or a CLI that reads files or pipes from stdin, with options like `-remove-fk` to strip foreign keys and `-keep-id` (on by default) to leave `id` columns untouched.

0 commit comments

Comments
 (0)