{
  "markdown": "<div align=\"center\">\n\n<img src=\"docs/img/dbtrail _ header.png\" alt=\"dbtrail: the open-source time-travel flashback for MySQL. Every change leaves a trail. Follow it back.\" width=\"100%\">\n\n**See every row change in MySQL and PostgreSQL, and undo the ones you didn't want. No restore, no locks, no schema changes.**\n\n[![Release](https://img.shields.io/github/v/release/dbtrail/dbtrail)](https://github.com/dbtrail/dbtrail/releases/latest)\n[![License](https://img.shields.io/badge/license-Apache--2.0-blue)](LICENSE)\n[![CI](https://github.com/dbtrail/dbtrail/actions/workflows/ci.yml/badge.svg)](https://github.com/dbtrail/dbtrail/actions)\n\n```sql\nSELECT * FROM orders WHERE id = 123 AS OF '2026-05-20 14:00:00'\n```\n\n*That query runs against production MySQL or Postgres. dbtrail makes it work.*\n\n<img src=\"docs/img/console-overview.png\" alt=\"dbtrail console: recent changes across every table, deletes surfaced first\" width=\"850\">\n\n</div>\n\n---\n\n## What you get\n\nPoint-in-time recovery restores the whole database and replays every log to\nreach one change. dbtrail keeps the changes themselves — it tails the MySQL\nbinary log or the Postgres WAL and stores every row change, with full before and\nafter images, in a searchable index:\n\n- **See every change.** What changed and when, for every row, with before/after diffs.\n- **Undo precisely.** Generate exact reversal SQL for just the damaged rows.\n- **Undo foreign-key cascades.** Rebuild the child rows an `ON DELETE CASCADE` wiped out. Restore the foreign keys an `ON DELETE SET NULL` cleared, or an `ON UPDATE CASCADE`/`SET NULL` re-pointed when a parent's key changed. InnoDB applies all of these below the binlog, where most tools cannot see them. See [Query & Recovery](docs/query-and-recovery.md).\n- **Time-travel.** Query any row or table as it was at any moment, from the web console or the `reconstruct` CLI. The live SQL `AS OF` interface also needs ProxySQL. See [Time-Travel SQL](docs/time-travel-sql.md).\n- **Who changed this?** Session attribution (the database user, host, and client program behind a change) ships in the commercial distribution, dbtrail EE.\n- **Prove the safety net holds.** `bintrail verify` checks offline, without touching the source, that a recovery would reproduce it. `bintrail status` flags any gap in the captured stream. You find out before you need it. See [Verify](docs/verify.md).\n- **Web console.** Browse, recover, and add servers to monitor, all in the UI.\n- **Ask it in plain English.** Connect Claude Desktop to your console in one click with an `.mcpb` bundle or a copy-paste URL ([5-minute guide](docs/connect-ai.md)). Any MCP client works; see the [MCP server](docs/mcp-server.md) reference.\n\nWorks with **MySQL**, **Percona Server for MySQL**, **Amazon RDS for MySQL**,\nand **Amazon Aurora MySQL** (verified). **Google Cloud SQL for MySQL** should\nwork too; please report issues. dbtrail connects over the replication protocol\nand never needs the binlog files on disk, which is why managed cloud databases\nwork. It requires MySQL 8.0+ with `binlog_format=ROW` and\n`binlog_row_image=FULL`; `bintrail doctor` checks both and prints the exact fix.\n\n## Try it in 30 seconds\n\nOne container, zero setup, time-travel SQL:\n\n```sh\ndocker run --rm -p 6033:6033 ghcr.io/dbtrail/bintrail-demo\n```\n\nSee [the demo image](docs/demo.md).\n\n## Install\n\n```sh\ncurl -fsSL https://raw.githubusercontent.com/dbtrail/dbtrail/main/install.sh | sh\n```\n\nThis downloads the Compose stack, brings it up, waits for the console, and prints\nwhat to do next. Then:\n\n1. Open **http://127.0.0.1:8090** and create a username and password on first run. That is your login from now on.\n2. Click **+ Add server**, pick the **source type** (MySQL, MariaDB, or PostgreSQL), and paste the host, user, and password of the database you want to watch. dbtrail runs preflight checks, provisions an index, and starts streaming within the minute.\n\n### PostgreSQL & MariaDB (alpha) sources\n\nThe same one-line install captures **PostgreSQL** and **MariaDB** sources too,\nnot just MySQL. In **+ Add server**, choose the source type; PostgreSQL reveals\nfields for the database, replication slot, and publication. PostgreSQL needs a\none-time setup on the source first (`wal_level = logical`,\n`REPLICA IDENTITY FULL`, and a publication). dbtrail validates these and never\nruns DDL on your source. The full walkthrough, including managed RDS, Aurora,\nand Cloud SQL: **[PostgreSQL source](docs/postgres.md)** ·\n**[MariaDB source (alpha)](docs/mariadb.md)**.\n\n## Documentation\n\n| Start here | Reference | Operations |\n|---|---|---|\n| [Install](docs/install.md) | [Query & Recovery](docs/query-and-recovery.md) | [Deployment](docs/deployment.md) · [Capacity](docs/capacity.md) |\n| [Quickstart](docs/quickstart.md) | [Web console](docs/console.md) | [Rotation & Status](docs/rotation-and-status.md) |\n| [DBA guide](docs/guide.md) | [Time-Travel SQL](docs/time-travel-sql.md) · [Verify recoveries](docs/verify.md) | [Docker](docs/docker.md) |\n| [30-second demo](docs/demo.md) | [Streaming](docs/streaming.md) · [Indexing](docs/indexing.md) | [Upload to S3](docs/upload.md) · [S3 IAM policy](docs/s3-iam-policy.md) · [Upgrading](docs/upgrade.md) |\n| | [MariaDB source (alpha)](docs/mariadb.md) · [PostgreSQL source](docs/postgres.md) | [Server identity](docs/server-identity.md) |\n| | [Connect an AI assistant](docs/connect-ai.md) · [MCP server](docs/mcp-server.md) | [Parquet debugging](docs/parquet-debugging.md) |\n| | [Dump & Baseline](docs/dump-and-baseline.md) · [DDL tracking](docs/ddl-tracking.md) | [Iceberg export](docs/iceberg-export.md) |\n\n## Privacy\n\nbintrail runs entirely in your infrastructure. **Your database data never\nleaves it**: not your rows, schemas, table names, queries, hostnames, DSNs, or\nfile paths.\n\nOfficial release builds do report **metadata-only usage statistics**: which\ncommand ran, whether it succeeded, a coarse error class, and your version and\nplatform. It is on by default and turns off in one line:\n\n```sh\nbintrail telemetry off      # or: DO_NOT_TRACK=1, BINTRAIL_TELEMETRY=off\nbintrail telemetry show     # prints what would be sent; sends nothing\n```\n\nNo identifier of any kind is stored or transmitted, so nothing ties those\nstatistics to you or your machine. A binary you build yourself has no reporting\naddress compiled in and cannot send anything. [TELEMETRY.md](docs/TELEMETRY.md)\ndocuments every field, every control, and the CI tests that enforce both.\n\nThe [privacy policy](PRIVACY.md) covers the Claude Desktop extension (`.mcpb`),\nwhich reports nothing at all, and how data moves when an AI client queries\nyour deployment.\n\n## License\n\n[Apache-2.0](LICENSE): free for any use, including commercial and production.\nContributions are welcome; see [CONTRIBUTING.md](.github/CONTRIBUTING.md) (a CLA\nis required, prompted automatically on your first PR).\n\nWant the index server **operated** for you (sized, backed up, upgraded, kept\nalive on-call) instead of running it yourself? That is the managed service at\n[dbtrail.com](https://dbtrail.com). [SUPPORT.md](docs/SUPPORT.md) draws the\nship-vs-operate line.\n",
  "bytes": 7099,
  "sha": "6ddd87167f49a7922f828bb4c6943526cc7bbc647eee7ec2e673045863208350",
  "repo_slug": "dbtrail/bintrail",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/mcp_com_dbtrail_dbtrail_014eacfd/readme"
}