Вы должны создать дубликат таблицы, запустить транзакцию, вставить все строки из старой таблицы, а затем зафиксировать. Самый безопасный способ.
Подведем итог:
CREATE TABLE duplicate ... (with the charset you like, etc)
SET AUTOCOMMIT=0;
START TRANSACTION;
INSERT INTO duplicate (...field-list...)
SELECT (...field-list...) from original_table;
COMMIT;
ALTER TABLE original RENAME TO original_backup;
ALTER TABLE duplicate RENAME TO original;
Вы должны быть осторожны с уникальными индексами и полями автоинкремента. Обязательно создайте дубликат таблицы без индексов, чтобы сделать вставки быстрыми, а затем добавьте их.