По частям можно, но это будет значительно дольше, так как изменить тип по частям в пределах одной таблицы нельзя.
Создаете новую таблицу с правильными полями(и типами полей), называете ее tasks_done_new.
Копируете в нее блоками по 50 тыс строк(юзайте limit). информацию из основной таблицы. Это и есть разбиение.
Удаляете основную таблицу(drop).
Переименовываете tasks_done_new в tasks_done.
Готово.
Рассчетное время простоя системы равно времени удаления старой tasks_done.
UPDATE:
Возможно, будет быстрее добавить новую колонку в старую таблицу, а потом удалить старую колонку и переименовать только что созданную.
Плюсы:
Минусы:
- могут навернуться запросы без указания конкретных колонок.
- может оказаться дольше, чем пересоздать таблицу.