In qualità di DBA MySQL, mi fido di fare la conversione facendo in modo che MySQL scriva lo script per me.
Formare il comando Linux eseguire questa query
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
Lo script convertirà prima le tabelle più piccole. Questo script ha inoltre ignorato qualsiasi tabella MyISAM che ha indici FULLTEXT.
Dopo aver esaminato lo script, puoi semplicemente eseguirlo in MySQL come segue:
mysql -h... -u... -p... -A < /root/ConvertMyISAM2InnoDB.sql
o se vuoi vedere i tempi di ogni conversione, accedi a mysql ed esegui questo:
mysql> source /root/ConvertMyISAM2InnoDB.sql
Questo non dovrebbe essere incasinato perché si verifica un blocco completo della tabella durante l'esecuzione della conversione.
Una volta convertite tutte le tabelle, è necessario ottimizzare le impostazioni di MySQL per l'utilizzo di InnoDB e ridimensionare il key_buffer.
Si prega di leggere questo per impostare il pool di buffer InnoDB: /dba/1/what-are-the-main-differences-between-innodb-and-myisam/2194#2194
Si prega di leggere anche questo: /drupal/1715/what-would-the-optimal-mysql-configuration-for-a-drupal-7-site-be/2367#2367
Provaci !!!