twix007
@twix007

Как массово перекодировать базы MyIsam в InnoDB?

Настроил MySQL для innoDB - у меня много баз данных.
Как их перекодировать правильно, побазово и что при этом меняется в самой базе?
Из того что нашёл на просторах (convert php script) не меняет ничего...

Или просто слить дамп каждой из таблиц и сделать автозамену в notepad++: ENGINE=MyISAM на ENGINE=InnoDB ?
  • Вопрос задан
  • 446 просмотров
Решения вопроса 1
twix007
@twix007 Автор вопроса
Вообщем слил каждую базу, сделал автозамену, запаковал каждую в база.sql.gz. Удалил старые таблицы и создал новые, импортировал.
Теперь моя проблема решена?
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
selivanov_pavel
@selivanov_pavel
Linux admin
Дамп будет быстрее, но базу придётся останавливать.

Движок может задаваться для каждой таблицы отдельно, вживую меняется так: ALTER TABLE table_name ENGINE=InnoDB;. Это тяжёлая операция, база по сути подвиснет на некоторое время. Этот негативный эффект можно сильно уменьшить, используя pt-online-schema-change - она создаёт новую таблицу в нужной структурой, создаёт триггеря для вставки информации в новую таблицу при изменении старой, постепенно переносит данные и переименовывает таблицу одной транзакцией, время в залоченном состоянии минимально.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы