The migration was running smooth until you hit the schema change. You needed a new column, and you needed it without downtime.
Adding a new column is simple on paper. In production, it can be dangerous. A single blocking ALTER TABLE can lock writes and drop performance to zero. The key is to add the column in a way that preserves uptime, integrity, and rollback options.
First, define the change. Use ALTER TABLE ... ADD COLUMN to add the new column. In PostgreSQL, adding a column without a default value is fast because it only updates the metadata. If you need a default, set it to NULL first, then backfill in small batches to avoid table-wide locks.
In MySQL, adding a column may require a table copy. Use pt-online-schema-change or native ALGORITHM=INPLACE where supported. For large datasets, verify the process in staging and monitor replication lag in production.