The schema was brittle. A single release pushed it past the breaking point. A new column was the only fix that made sense.
Adding a new column to a production database should be simple, but it rarely is. Data models age. Queries make hidden assumptions. Indexes fight you. The wrong migration can take down everything. That risk is why you treat adding a column as a first-class change, not a trivial update.
Start with the migration plan. Define the column with the correct data type and constraints from the start. If it will be part of a primary or unique key, plan for population before enabling constraints. Use NULL defaults or backfill in controlled batches to avoid locking long enough to block traffic.
Test on a clone of production data. This reveals query regressions, replication lag, and unexpected index growth. For large tables, avoid full table rewrites. Use ADD COLUMN with no default, then populate data with a separate UPDATE in small chunks. This keeps locks short and performance stable.