Change data capture streams every insert, update and delete from PostgreSQL or MySQL into Meilisearch, Elasticsearch or OpenSearch — no polling, no batch windows, no cloud middleman. Self-hosted, with monitoring built in.
One-time licence · no subscription · self-hosted
Our Change Data Capture protocol ensures your destination is always a perfect, real-time reflection of your primary database.
Data Mirror tails the PostgreSQL WAL and the MySQL binlog directly. Every insert, update and delete is picked up as it commits, so there is no polling loop, no modified_at column to maintain, and no load on your primary.
Flatten relations, rename and compute fields, and drop what the index does not need. Transforms are plain Python, so joins and enrichment stay readable instead of hiding inside a query language.
Batched writes reach Meilisearch, Elasticsearch or OpenSearch with retries and a dead-letter queue behind them. A failed document is retried and recorded, never silently dropped.
Point Data Mirror at a replication slot or binlog and it starts streaming. No triggers on your tables, no scheduled scans, no schema changes to your application database.
Don't guess if your data is syncing. Know exactly what happens in every microsecond.
Out of the box, our built-in web dashboard provides real-time throughput metrics. No Prometheus setup required. Watch per-event latency stay around 50ms, even while processing millions of rows.
Dive into the raw stream. If a query hits a snag, the detailed index logs provide exact granular data on row mutations, cast warnings, and destination rejections.
PGSync, Debezium + Kafka, managed pipelines — they all work. Data Mirror gives you the real-time CDC to Meilisearch, Elasticsearch or OpenSearch in a single container, with monitoring built in. Here is how we compare.
Keep your sensitive data where it belongs-within your own secure perimeter. DataMirror is built to be self-hosted, ensuring no information ever touches the public internet.
Connect sources and destinations over internal IPs. DataMirror runs as a local conduit, not a cloud proxy.
Unlike other sync tools, we never see, store, or touch your data. It stays within your controlled environment.
Deploy in minutes on your own infrastructure using standard container orchestration workflows.
The monitoring dashboard ships with every licence — no separate observability stack to stand up. Click any shot to open the gallery.
Events processed, error rate, replication lag and uptime at a glance, with the live source-to-sink topology.
Throughput by operation type, plus P50 and P99 for both processing and end-to-end latency.
Every insert, update and delete with its source table, primary key, latency and commit status.
Dead-letter queue with broker and in-memory retry, and snapshot recovery that resumes interrupted scans.
Screens captured from a local test node syncing PostgreSQL to Meilisearch over WAL-based CDC.
One download, from whichever checkout you use. Everything below is included in the $49 licence.
The Data Mirror Python app as a ready-to-run Docker image, v0.8.1, with a lightweight broker built in — Kafka optional, never required.
A single declarative YAML that maps tables to indexes, with transforms and relationship resolution.
The full operations UI — throughput, P99 latency, engine topology, dead-letter queue and consistency checks.
Install guide, full configuration and API reference, a transformation guide for custom Python scripts, and a beginner walkthrough from empty database to live index.
Emailed by Gumroad, or downloaded from your Envato account, the moment payment clears. Future updates are included.
Six months of item support included, extendable to twelve at checkout. Hands-on setup help is available separately — just ask.
Check these against your stack before you buy — everything Data Mirror needs, and everything it talks to.
The two things people weigh Data Mirror against: a hosted sync service, or building it yourself on Debezium and Kafka.
| Data Mirror | Hosted sync service | DIY Debezium + Kafka | |
|---|---|---|---|
| Cost at production scale | One-time, $49 | Recurring, usage-based | Free software, your engineering time |
| Your rows leave your network | |||
| Requires an external broker to run | |||
| Monitoring dashboard included | |||
| Runs inside a private VPC | Sometimes, on higher tiers | ||
| Time to first synced index | Minutes | Minutes | Days to weeks |
| Price grows with row count |
Hosted services vary by vendor and tier — check current terms before comparing. DIY costs nothing to licence; the expense is the engineering time to build and operate it.
# Start the engine $ docker run -d \ -p 8090:8090 \ -v $(pwd)/schema.yaml:/schema.yaml \ data-mirror