Adding a new column to a production database should be routine. It rarely is. It can cause downtime, block deployments, or silently break code that still assumes the old schema. The safest path is to design the change to be backward-compatible, deploy it in stages, and monitor each step.
First, create the new column with a default value or NULL allowed. This schema change should run online if your database supports it. Avoid locking large tables during peak load. In MySQL or Postgres, test the ALTER TABLE locally with realistic data size. Measure how long it takes.
Second, backfill data in small batches. Use an id-range or timestamp filter. Throttle writes to avoid I/O spikes. Track progress with logs or metrics, not guesswork.