2025-11-26 · Database
Postmortem: a migration that locked our production table
One ALTER TABLE during peak traffic, 14 minutes of errors, and the checklist we wrote after.
Introduction
Reconstructs the timeline, explains why the lock was held far longer than expected, and lists the safeguards we added.
Field notes
A few patterns we kept seeing while puttering around Database problems:
- The simple version survived every refactor; the clever version didn’t.
- Documentation written during the work aged far better than documentation written after.
- The second time a problem shows up, it is already a pattern — name it.
A checklist you can steal
- The failure is reproducible with one command.
- The fix has a test that fails without it.
- Someone other than the author has run it on their machine.
Closing
Write the short version future-you will actually read. That is the whole trick.