Adding a new column in a production database is more than a schema change. It is a contract update with every row, every query, every integration. A careless migration can lock tables, block writes, or break replicas. The difference between safe deployment and downtime is preparation.
First, define the new column with intention. Decide its type, constraints, and default values. Use NULL defaults when adding to large datasets to avoid full table rewrites. For small, critical datasets, you can apply defaults directly if it will not interrupt traffic.
Second, choose an online schema migration method. Tools like pt-online-schema-change, gh-ost, or native database features allow column additions without locking the table. Test these migrations against a realistic dataset before touching production.
Third, update dependent code in phases. Add the column, deploy code that writes to it, then deploy code that reads from it. This spreads risk and allows rollback at each stage.