Adding a new column to a live database is simple to describe and dangerous to execute. Schema changes affect performance, availability, and code paths. The choice between ALTER TABLE and a background migration matters. A blocking DDL on a large table can lock writes for minutes or even hours.
First, define the column with the correct type and constraints. Decide if it should be nullable at launch. Adding a non-null column with a default value will rewrite the entire table in some databases. In PostgreSQL, adding a nullable column without a default is near-instant. MySQL may behave differently. Understand your engine.
Second, plan data backfill. Do it in batches to avoid high load. In application code, handle both old and new states until the migration completes. Feature flags help isolate risk. Deploy schema changes separately from code changes that depend on them.