Sebagai DBA MySQL, saya percaya MySQL untuk melakukan konversi dengan meminta MySQL menulis skrip untuk saya.
Dari perintah Linux jalankan query ini
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
Script akan mengonversi tabel terkecil terlebih dahulu. Script ini juga mem-bypass tabel MyISAM yang memiliki indeks FULLTEXT.
Setelah melihat skrip, Anda dapat menjalankannya di MySQL sebagai berikut:
mysql -h... -u... -p... -A < /root/ConvertMyISAM2InnoDB.sql
atau jika Anda ingin melihat waktu setiap konversi, masuk ke mysql dan jalankan ini:
mysql> source /root/ConvertMyISAM2InnoDB.sql
Ini seharusnya tidak menjadi kacau karena kunci tabel penuh terjadi ketika konversi sedang dijalankan.
Setelah semua tabel dikonversi, Anda perlu menyesuaikan pengaturan MySQL untuk penggunaan InnoDB dan menurunkan key_buffer.
Silakan baca ini untuk mengatur Pool Buffer InnoDB: /dba/1/what-are-the-main-differences-between-innodb-and-myisam/2194#2194
Silakan baca ini juga: /drupal/1715/what-would-the-optimal-mysql-configuration-for-a-drupal-7-site-be/2367#2367
Cobalah !!!