Вы можете сделать это онлайн, создав новую таблицу в качестве клона оригинального макета.
CREATE TABLE newtable LIKE oldtable;
Затем измените столбцы вашей новой таблицы, чтобы они соответствовали новой спецификации
ALTER TABLE newtable ... ;
Как только это будет сделано, скопируйте данные.
INSERT INTO newtable SELECT * FROM oldtable;
Наконец, используйте несколько минут простоя, чтобы переименовать старую таблицу во что-то другое, а затем присвойте новой таблице имя старой таблицы.
Конечно, вам нужно иметь достаточно места для хранения двух доступных копий таблицы. Кроме того, при копировании может потребоваться отключить индексы для новой таблицы, чтобы уменьшить нагрузку на сервер во время операции копирования.
Если вы уверены, что все данные в старой таблице были скопированы в новую без каких-либо потерь, вы можете окончательно удалить старую таблицу полностью.
РЕДАКТИРОВАТЬ:
На самом деле, лучшим подходом может быть просто добавить новый столбец в существующую таблицу, который соответствует новым требованиям для столбца, который вы хотите обновить, скопировать значения старого столбца в новый столбец, удалить старый столбец и переименуйте новый столбец в имя старого столбца. Это, безусловно, приведет к снижению требований к вашему хранилищу.
Кроме того, если у вас есть какие-либо ограничения FK, которые зависят от рассматриваемого столбца, вам нужно будет удалить их перед запуском и восстановить их в новом столбце, как только вы это сделаете.