Adding a new column should be simple, but in live systems it’s loaded with edge cases. Data consistency, locking, replication lag, and backward compatibility all fight back if you don’t plan for them. You can’t just alter a table in production and hope it holds; you need a strategy that works under real load.
The safest method is online schema change. Tools like gh-ost and pt-online-schema-change create a shadow table, copy the data in chunks, then swap it in without downtime. This also lets you add indexes, default values, and constraints without stalling queries.
When designing the new column, set defaults that help existing rows remain valid. Always check for nullability issues. If the column will be used in queries, precompute indexes to avoid cold start penalties. Be mindful of trigger behavior, replication events, and rollback plans.