Adding a new column to a production database is simple in theory but dangerous in practice. The wrong approach can lock tables, block writes, or cause downtime. The right approach keeps your data intact and your service online.
A new column changes the schema. That change must be coordinated across multiple layers: the database, the application code, and any dependent services. Start with a schema migration that is backward compatible. Create the new column first, without removing or altering existing ones. Use a default value or allow nulls to avoid breaking inserts.
If the database is large, add the column in a way that avoids full-table locks. Many relational databases support non-blocking operations, but some require explicit flags or use of online schema changes. For MySQL, tools like pt-online-schema-change or gh-ost can manage this safely. In Postgres, adding a nullable column is fast, but adding a column with a non-null default can be slow because it rewrites the table.