Чат Telegram
Группа ВКонтакте
MyISAM в InnoDB и наоборот

MyISAM в InnoDB и наоборот

В данной статье рассмотрим оба варианта перевода движка: из MyISAM в InnoDB, и наоборот. В случае, когда переводим из MyISAM в InnoDB нужно открыть конфиг MySQL по пути /etc/mysql/my.cnf (для ОС Debian) и убедиться, что строка skip-innodb закомментирована, либо вовсе отсутствует. Если же Вы переводите InnoDB в MyISAM и после этого в СУБД не останется таблиц на InnoDB, то после завершения конвертации данную строку следует раскомментировать, это позволит сэкономить память на сервере.

Курс программирования на PHP
Подготовка до уровня устройства на работу!
Начать бесплатно

Так же для при переходе на InnoDB нужно убедиться в правильности параметра innodb_data_file_path. Он должен быть похож на:

innodb_data_file_path = ibdata1:100M:autoextend

ibdata1 – минимальный создаваемый размер файла под хранение таблиц
autoextend – разрешает автоматическое увеличение этого файла.

Если у этого параметра установлен ключ max:NN – удалите его.

Также вместо innodb_data_file_path можно использовать innodb_file_per_table, тогда под каждую таблицу будет использоваться свой отдельный файл.

После внесения изменений следует перезапустить сервис MySQL:

service mysql restart

Теперь производим само преобразование. Создаём дамп БД, в которой планируем изменить тип движка:

mysqldump --opt -u USER -p DBNAME > dump.sql

И заменяем в дампе все значения с указанием нового движка. Для перевода из MyISAM в InnoDB:

Самый понятный курс PHP
Онлайн-уроки в удобное время!
Начать бесплатно
sed 's/ENGINE=MyISAM/ENGINE=InnoDB/g' dump.sql > resultdump.sql

А для перевода InnoDB в MyISAM:

sed 's/ENGINE=InnoDB/ENGINE=MyISAM/g' dump.sql > resultdump.sql

После чего удаляем БД:

mysqladmin -u USER -p drop DBNAME

Создаём пустую БД:

mysqladmin -u USER -p create DBNAME

И загружаем в неё наш изменённый дамп:

mysql -u USER -p DBNAME < resultdump.sql

Готово. Не забудьте произвести дополнительные операции, описанные в начале статьи, если это необходимо. Изменение движка таблиц MySQL MyISAM InnoDB на этом завершено.

Присоединяйтесь к нам в ВКонтакте и в Facebook, чтобы не пропустить новые уроки. А также вступайте в наш чат PHP-разработчиков в Telegram.
Об авторе
Артём Ивашкевич
Артём Ивашкевич
Занимаюсь программированием более трех лет. В свободное время обучаю программированию на PHP других людей, потому что мне это нравится. Если вы интересуетесь темой IT и хотели бы стать разработчиком, рекомендую прочитать статью о том, как я стал программистом.
Курс программирования на PHP
Подготовка до уровня устройства на работу!
Начать бесплатно
Курс программирования на PHP
Подготовка до уровня устройства на работу!
Начать бесплатно
Комментарии (0)
Онлайн обучение PHP
Путь с полного нуля до джуниора!
Начать бесплатно
loader
Есть вопрос по программированию?
Здесь быстро ответят!
Задать вопрос
Самый понятный курс PHP
Онлайн-уроки в удобное время!
Начать бесплатно
loader
Форум веб-разработчиков
Здесь все!
Перейти
loader
Логические задачи с собеседований