HTAP for MySQL and MariaDB
Reports, years of history, deep pages. Point the mysql client you already use at DBTrail, and they come back in seconds, without slowing down your MySQL.
Reports and heavy queries in seconds, for MySQL 8.0+, Amazon RDS for MySQL, Aurora MySQL, Percona Server, MariaDB and anything else that writes a MySQL binlog. Point your mysql client at DBTrail: nothing is installed on your MySQL and nothing is migrated.
Works with
Same SQL, the same report, round after round for a day. Quick lookups stay on your MySQL, where they are fastest. The numbers
Send them to DBTrail on the same connection. Your MySQL keeps answering the quick ones.
Totals and rankings over whole tables, the ones that run for minutes.
SELECT warehouse, sum(amount) FROM order_lines GROUP BY warehouse;
Trends that read most of a table, without pushing your working set out of memory.
SELECT year(created_at), count(*) FROM orders WHERE created_at >= '2023-01-01' GROUP BY 1;
Page 5,000 of a listing, where MySQL reads and throws away every row before it.
SELECT * FROM events ORDER BY id LIMIT 20 OFFSET 100000;
Hybrid transactional and analytical processing: live dashboards, reports inside your product, and ad hoc questions on production data, without slowing down the application.
UPDATE orders SET status = 'paid' WHERE id = 4827your MySQLa writeSELECT warehouse, sum(amount) FROM order_lines GROUP BY 1DBTrailreads the whole tableSELECT * FROM customers WHERE id = 42your MySQLa lookup by keySELECT year(created_at), count(*) FROM orders GROUP BY 1DBTrailreads most of the tableSELECT qty FROM stock WHERE sku = 'A-17' FOR UPDATEyour MySQLinside a transactionSELECT * FROM events ORDER BY id LIMIT 20 OFFSET 100000DBTraila deep pageDBTrail looks at each statement. Writes, transactions and lookups by key go to your MySQL; reads over large parts of a table go to the columnar copy. You don't mark your queries.
DBTrail follows your binlog the way a replica does, so there is no pipeline to build or nightly batch to wait for. In fresh mode the copy is seconds behind your MySQL.
Your application, your BI tools and the mysql client connect to DBTrail as they connect to MySQL, and send the same SQL.
Percona Server too, and anything that writes a MySQL binlog. It runs on your machines, on x86 or ARM, and it is open source.
DBTrail keeps the before and after of every row it captures. See a row as it was yesterday, or get the SQL that puts back the rows a bad UPDATE or DELETE touched. You review it and run it.
-- the row as it was this morning SELECT * FROM _flashback.orders AS OF '2026-11-07 09:00:00' WHERE id = 4827; -- the SQL that puts it back UPDATE orders SET status = 'paid' WHERE id = 4827;
Connect Claude, or any MCP client, and ask in plain words: what was deleted and when, how a row looked on Monday, the SQL that puts it back. It sees what the web interface shows you, with the same redactions. Its tools only read, and it never runs SQL on your MySQL.
Connect ClaudeTRUNCATE, makes DBTrail read that table again, with a short lock.All of it: Limitations
Open source under Apache-2.0, for any use.
One command installs it with Docker. Connect your MySQL in the web interface and run a query in a few minutes.
curl -fsSL https://raw.githubusercontent.com/dbtrail/dbtrail/main/install.sh | sh
Quick Start
The same setup as a compose file and a few API calls, to keep in your automation. Linux packages and Amazon ECS too.
PUT /api/flashback {"routing": true}
In production