MySQL DBA के रूप में, मुझे विश्वास है कि MySQL मेरे लिए स्क्रिप्ट लिखने से MySQL रूपांतरण करता है।
लिनक्स कमांड को इस क्वेरी को चलाते हैं
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
स्क्रिप्ट पहले सबसे छोटी तालिकाओं को रूपांतरित करेगी। यह स्क्रिप्ट किसी भी MyISAM तालिकाओं को भी बाईपास करती है जिसमें FULLTEXT इंडेक्स होते हैं।
A स्क्रिप्ट की तलाश में, आप इसे केवल MySQL में निम्नानुसार चला सकते हैं:
mysql -h... -u... -p... -A < /root/ConvertMyISAM2InnoDB.sql
या यदि आप प्रत्येक रूपांतरण का समय देखना चाहते हैं, तो mysql पर लॉगिन करें और इसे चलाएं:
mysql> source /root/ConvertMyISAM2InnoDB.sql
यह गड़बड़ नहीं होनी चाहिए क्योंकि पूर्ण टेबल लॉक तब होता है जब रूपांतरण निष्पादित किया जा रहा है।
एक बार सभी तालिकाओं को परिवर्तित करने के बाद आपको InnoDB उपयोग के लिए MySQL सेटिंग्स को ट्यून करना होगा और key_buffer को स्केल करना होगा।
InnoDB बफर पूल की स्थापना के लिए कृपया इसे पढ़ें: /dba/1/what-are-the-main-differences-between-innodb-and-myisam-2194#2194
कृपया इसे भी पढ़ें: /drupal/1715/what-would-the-optimal-mysql-configuration-for-a-drupal-7-site-be/2367#2367
कोशिश करो !!!