Northwind moved 11 terabytes between two managed Postgres clusters last spring. The plan called for four hours of degraded writes on a Saturday night. What the team got instead was nine days of partial availability, an unplanned index rebuild, and a bill roughly three times the estimate.
None of that came from the migration itself. The copy finished more or less on schedule. The cost showed up in everything the copy touched: connection pools sized for the old topology, a backfill job competing with production reads, and a rollback path that quietly stopped working once the first schema change landed.
This teardown walks through the three decisions that turned a maintenance window into a quarter of remediation work, using the team's own incident timeline and the invoices either side of the cutover.