Rust / PostgreSQL migrationFrozen rehearsal reconciled · cutover pending

1.2 million rows, one controlled migration path

I built a checksum-evidenced path from a legacy MariaDB catalog into a PostgreSQL and Rust replacement, with allowlisted imports, parity reports, and safe sequence repair.

1,202,321 rows reconciled · zero foreign-key orphan groups · 28 sequences checked

The flow

How the pieces connect

  1. Frozen legacy dump
  2. Allowlisted import
  3. PostgreSQL canonical model
  4. Parity and reconciliation
  5. Rust renderer and control plane
  6. Cutover gate
01

The job

Large migrations fail when a row count is treated as proof. Canonical records, preserved raw rows, relationships, sequences, checksums, and rendering behavior need separate evidence.

02

The hard part

Move only allowlisted data, preserve the legacy record where needed, and make every discrepancy visible before production is touched.

03

How I built it

  1. Import from a frozen dump instead of reading a changing production database.
  2. Separate canonical rows from raw preserved rows so cleanup does not erase source evidence.
  3. Reconcile relationships, orphans, counts, checksums, and sequences as different checks.
  4. Block production cutover until the renderer, control plane, backup, and rollback gates pass.
04

What I verified

  • 379,232 canonical rows
  • 823,089 raw preserved rows
  • 1,202,321 total reconciled rows
  • Zero foreign-key orphan groups and 28 safe sequences

Current state: The frozen rehearsal reconciles cleanly. Production cutover, final interface acceptance, and a production rollback test are still pending.