Jako MySQL DBA ufam, że MySQL wykona konwersję, ponieważ MySQL napisze dla mnie skrypt.
Z poziomu polecenia Linux uruchom tę kwerendę
mysql -h... -u... -p... -A --skip-column-names -e"SELECT CONCAT('ALTER TABLE ',db,'.',tb,' ENGINE=InnoDB;') FROM (SELECT A.db,A.tb,A.tbsize FROM (SELECT table_schema db,table_name tb,(data_length+index_length) tbsize FROM information_schema.tables WHERE engine='MyISAM' AND table_schema NOT IN ('information_schema','mysql')) A LEFT JOIN (SELECT table_schema db,table_name tb FROM information_schema.statistics WHERE index_type='FULLTEXT') B USING (db,tb) WHERE B.db IS NULL) AA ORDER BY tbsize" > /root/ConvertMyISAM2InnoDB.sql
Skrypt najpierw skonwertuje najmniejsze tabele. Ten skrypt pominął także wszystkie tabele MyISAM, które mają indeksy FULLTEXT.
Po obejrzeniu skryptu możesz po prostu uruchomić go w MySQL w następujący sposób:
mysql -h... -u... -p... -A < /root/ConvertMyISAM2InnoDB.sql
lub jeśli chcesz zobaczyć czas każdej konwersji, zaloguj się do mysql i uruchom to:
mysql> source /root/ConvertMyISAM2InnoDB.sql
Nie należy tego pomieszać, ponieważ podczas wykonywania konwersji dochodzi do pełnej blokady tabeli.
Po przekonwertowaniu wszystkich tabel musisz dostroić ustawienia MySQL do użycia InnoDB i przeskalować key_buffer.
Przeczytaj to, aby ustawić pulę buforów InnoDB: /dba/1/what-are-the-main-differences-between-innodb-and-myisam/2194#2194
Przeczytaj również: /drupal/1715/what-would-the-optimal-mysql-configuration-for-a-drupal-7-site-be/2367#2367
Spróbuj !!!