Конвертация из MYISAM в INNODB

Разумеется, желательно сначала сделать бэкап.

Создание SQL-запросов для всех таблиц в базе [DATABASE_NAME]. Не забудьте заменить [USER_NAME] на правильное имя пользователя.

1
mysql -u [USER_NAME] -p -e "SHOW TABLES IN [DATABASE_NAME];" | tail -n +2 | xargs -I '{}' echo "ALTER TABLE {} ENGINE=INNODB;" > alter_table.sql

Вторая команда ставит движок MYISAM для таблиц search_*.

1
perl -p -i -e 's/(search_[a-z_]+ ENGINE=)INNODB/\1MYISAM/g' alter_table.sql

После этого можно посмотреть alter_table.sql и руками поправить, если что не так.

Собственно, преобразование.

1
mysql -u [USER_NAME] -p [DATABASE_NAME] < alter_table.sql

Комментарии