Adding a new column sounds simple. In production, it is not. Schema changes touch live workloads. They can lock tables, block writes, or break queries. Large datasets make it worse. Migrations stall. Deploys freeze. Users feel it.
The safest path is a zero-downtime migration. Start by adding the new column as nullable with no default. This avoids table rewrites. Use a non-blocking migration tool or your database’s online DDL feature. Verify the column exists across replicas before using it.
Next, backfill data in small batches. Avoid long transactions. Keep locks short. Log errors and set retry logic. For high-traffic systems, consider throttling the backfill to protect query performance.