Единственное что я могу сейчас придумать:
1. поднимаем параллельно второй инстанс БД с копией продакшен базы;
2. накатываем миграции на этот инстанс;
3. синхронизируем данные, которые успели измениться за это время на старом инстансе, с новым;
4. тушим старый инстанс, оставляем новый и меняем контейнер с php-кодом, который теперь будет с ним работать;
примерно все как вы описали, но, видимо, вас никогда не били за потерю данных
таблицу стараются не менять до последнего - проще сделать рядом таблицу исключений / дополнений и в приложении дополнительную проверку
(это если изначально она не была спроектирована очень уж плохо)
когда уже нельзя терпеть - делается таблица рядом, наполняется и приложение переключается на нее ,или rename саму таблицу