Skip to content
Cupcake-DRCP for Enterprise · Linux console walkthrough · Example dataLooking for the Mac app? →

Are the rows actually the same?

MySQL data comparison and drift detection

Pick a plan, hit run. Cupcake counts the rows on both sides and tells you which ones don't agree.

Compare is the point-in-time check that source and target still match — same row counts, same column values, no quiet drift. It reuses the plan you already built (same table pairs, same column mappings, same filters), so there's nothing new to configure. Each run is saved with a timestamp, a drift count, and a hash you can paste into a ticket.

8saved runs · example
557loudest drift · example
2step setup · example
Cupcakeops-warehouseCompare
Compare

Point-in-time source-vs-target verification

RUN PLAN DRIFT STATUS ACTIONS
ANALYTICS Prod → Dev analytics_prod → analytics_dev · 6/18/2026, 2:00:20 AM 9e7799
PLAN ANALYTICS Prod → Dev 0b3341
6
COMPLETED
ANALYTICS Prod → Dev analytics_prod → analytics_dev · 6/17/2026, 2:00:20 AM 79ec3d
PLAN ANALYTICS Prod → Dev 0b3341
47
COMPLETED
ANALYTICS Prod → Dev analytics_prod → analytics_dev · 6/16/2026, 2:00:20 AM 086b0a
PLAN ANALYTICS Prod → Dev 0b3341
557
COMPLETED
ANALYTICS Prod → Dev analytics_prod → analytics_dev · 6/15/2026, 2:00:20 AM 480073
PLAN ANALYTICS Prod → Dev 0b3341
52
COMPLETED
ANALYTICS Prod → Dev analytics_prod → analytics_dev · 6/14/2026, 2:00:20 AM 9ac570
PLAN ANALYTICS Prod → Dev 0b3341
104
COMPLETED
ANALYTICS Prod → Dev analytics_prod → analytics_dev · 6/13/2026, 2:00:20 AM 7f788c
PLAN ANALYTICS Prod → Dev 0b3341
22
COMPLETED
BILLING to Dev billing_v4 → billing_dev · 5/23/2026, 6:41:14 AM 0e2ad3
PLAN BILLING to Dev 03a58d
0
COMPLETED
BILLING to Dev billing_v4 → billing_dev · 5/22/2026, 10:36:30 PM 14e27f
PLAN BILLING to Dev 03a58d
0
COMPLETED
LICENSEvalid WORKERhealthy JOBS3 active build 2.7.81 · Web v2.7.81 · Built Jun 18, 2026, 04:09 PM CDT · API v2.7.81
Cupcakeops-warehouse
Run comparison

Verify point-in-time row parity between source and target

1
PLAN
2
RUN

Plan

What to compare

Step 1 of 2
LICENSEvalid WORKERhealthy JOBS3 active build 2.7.81 · Web v2.7.81 · Built Jun 18, 2026, 04:09 PM CDT · API v2.7.81

Illustrative Enterprise interface with example data. Controls are shown for reference; operations run in your installed application.

Product details

The run history above, and the two-click wizard that makes a new one

The first mockup is the saved run history — every comparison that's ever been kicked off in this project, with its drift count and a copy-able ID. The second is the wizard that starts a new one: literally pick a plan from the dropdown, click Continue, and run. The cards below walk through what the drift numbers mean, why some runs are 0, how the wizard reuses everything from the plan, and where Compare fits alongside CDC and Reconcile.

The run history above

The first mockup is every comparison that's been kicked off in this project, newest at the top. Each row pairs a plan with a date, a copy-able run hash, a drift count, and a green COMPLETED pill. The eye goes straight to the drift column — most of the screen is gray zeros, and the amber numbers (6, 47, 557, 52, 104, 22) are the days a plan was diverging. The 557 is loud enough to be the reason someone opens this tab.

What 'drift' actually means

Drift is the count of rows that don't agree between source and target after Cupcake matched them by primary key. A row is drift if the target's missing it, the source's missing it, or the same key has different column values on the two sides. A zero in the DRIFT column means every row that was supposed to be on the target was there, with the right values. The amber count is a focused to-do list — there's exactly that many rows to look at.

Step 1 — Pick a plan

The second mockup is the wizard. Step 1 is a single dropdown — pick the saved Plan you want to verify. Each entry in the dropdown shows the plan name on the left and the masked source → target flow on the right, so the right one is unambiguous even when two plans share a name. The hovered entry (INVENTORY Prod → Dev in the screenshot) is the one that'd run if you clicked Continue right now.

Step 2 — Run and read the receipt

Continue and the job starts. Cupcake walks every table pair in the plan, reads rows on both sides using the column mappings you already set up, and writes back the drift count plus a per-table breakdown. The receipt lands in the history above with a fresh timestamp, a hash, and a status pill — the team can paste the hash into a ticket and anyone can find the exact run.

Why Compare reuses the plan and doesn't ask for anything else

Every other tool that wants to know 'are these rows the same?' would otherwise have to re-specify the table pairs, the keys, the column mappings, the filters. Plans already hold all of that. So Compare just borrows. The wizard is two clicks (pick plan, click run) precisely because Plans took care of everything else.

Where Compare fits next to CDC and Reconcile

CDC streams keep the target close to the source by replaying changes — but a stream can be 'running' and still be quietly behind. Compare is the periodic ground truth: run it overnight, look at the drift in the morning, and if the number is loud, run Reconcile to close the gap. The three pages are the same trio of questions in different cadences: is it caught up (CDC), did it stay caught up (Compare), and if not, fix it (Reconcile).

Feature highlights

What Compare gives back

No new configuration

Compare reuses the Plan. Same table pairs, same column mappings, same filters — nothing to re-pick. Pick the plan from the dropdown, click Continue, and the run is on its way.

A receipt for every run

Each comparison saves a timestamp, the source → target flow it ran against, the drift count, and a short hash. The row history above is the single source of truth for 'when did we last verify, and was it clean?' — paste the hash into a ticket and anyone on the team can find the exact run.

Drift you can scan at coffee speed

The DRIFT column on the run history is the whole story in one number. Zeros mean the rows agree. The amber numbers — 6, 47, 557, 52 — are the days a plan needs a closer look. The 557 spike has a date next to it, and the receipt tells you whether the next day's run cleared it.