У вас есть какие-то таблицы в базе данных MySQL, все еще использующие MyISAM, и вы хотели бы преобразовать их в механизм хранения InnoDB ?
Это руководство было написано, чтобы помочь вам преобразовать MyISAM в InnoDB Storage Engine.
InnoDB уделяет большое внимание производительности, поддержке транзакций и надежности.
Начиная с версии MySQL 5.5 это был механизм хранения MySQL по умолчанию.
Вы можете прочитать MyISAM для InnoDB: почему и как получить сводную информацию о том, почему вы должны выбрать InnoDB.
Во-первых, прежде чем вы сможете конвертировать таблицы, вам нужно получить список таблиц, которые используют MyISAM.
Для этого войдите в свою MySQL / MariaDB из CLI и выполните запрос ниже.
$ mysql -u root -p
Затем запустите:
SELECT CONCAT('ALTER TABLE ',TABLE_NAME,' ENGINE=InnoDB;') FROM INFORMATION_SCHEMA.TABLES WHERE ENGINE='MyISAM' AND table_schema = 'mydb';
Замените mydb вашим реальным именем базы данных.
Это выдаст вам список таблиц в базе данных mydb с использованием MyISAM и запросы, которые необходимо использовать для преобразования их в InnoDB.
Вы должны получить вывод, аналогичный приведенному ниже.
+------------------------------------------------------+ | CONCAT('ALTER TABLE ',TABLE_NAME,' ENGINE=InnoDB;') | +------------------------------------------------------+ | ALTER TABLE wp_ninja_forms_fav_fields ENGINE=InnoDB; | | ALTER TABLE wp_blc_synch ENGINE=InnoDB; | | ALTER TABLE wp_nf_relationships ENGINE=InnoDB; | | ALTER TABLE wp_top_ten_daily ENGINE=InnoDB; | | ALTER TABLE wp_es_deliverreport ENGINE=InnoDB; | | ALTER TABLE wp_usermeta ENGINE=InnoDB; | | ALTER TABLE wp_comments ENGINE=InnoDB; | | ALTER TABLE wp_term_relationships ENGINE=InnoDB; | | ALTER TABLE wp_options ENGINE=InnoDB; | | ALTER TABLE wp_terms ENGINE=InnoDB; | | ALTER TABLE wp_blc_links ENGINE=InnoDB; | | ALTER TABLE wp_links ENGINE=InnoDB; | | ALTER TABLE wp_term_taxonomy ENGINE=InnoDB; | | ALTER TABLE wp_postmeta ENGINE=InnoDB; | | ALTER TABLE wp_nf_objects ENGINE=InnoDB; | | ALTER TABLE wp_give_donormeta ENGINE=InnoDB; | | ALTER TABLE wp_commentmeta ENGINE=InnoDB; | | ALTER TABLE wp_es_sentdetails ENGINE=InnoDB; | | ALTER TABLE wp_blc_instances ENGINE=InnoDB; | | ALTER TABLE wp_snp_log ENGINE=InnoDB; | | ALTER TABLE wp_posts ENGINE=InnoDB; | | ALTER TABLE wp_blc_filters ENGINE=InnoDB; | | ALTER TABLE wp_slim_events_archive ENGINE=InnoDB; | | ALTER TABLE wp_top_ten ENGINE=InnoDB; | | ALTER TABLE wp_es_emaillist ENGINE=InnoDB; | | ALTER TABLE wp_es_templatetable ENGINE=InnoDB; | | ALTER TABLE wp_nf_objectmeta ENGINE=InnoDB; | | ALTER TABLE wp_users ENGINE=InnoDB; | | ALTER TABLE wp_es_notification ENGINE=InnoDB; | | ALTER TABLE wp_ninja_forms_fields ENGINE=InnoDB; | | ALTER TABLE wp_give_donors ENGINE=InnoDB; | | ALTER TABLE wp_termmeta ENGINE=InnoDB; | | ALTER TABLE wp_snp_stats ENGINE=InnoDB; | | ALTER TABLE wp_es_pluginconfig ENGINE=InnoDB; | +------------------------------------------------------+ 34 rows in set (0.003 sec)
Преобразование таблиц MySQL из MyISAM в хранилище InnoDB
Все, что вам нужно сделать сейчас, это скопировать и запустить команду ниже в вашей оболочке MySQL.
Переключитесь на базу данных, которую вы хотите использовать.
MariaDB [mysql]> use mydb; Reading table information for completion of table and column names You can turn off this feature to get a quicker startup with -A Database changed MariaDB [mydb]>
Затем запустите приведенные ранее команды преобразования.
Образец вывода:
MariaDB [mydb]> ALTER TABLE wp_give_donors ENGINE=InnoDB; Query OK, 0 rows affected (0.013 sec) Records: 0 Duplicates: 0 Warnings: 0 MariaDB [mydb]> ALTER TABLE wp_termmeta ENGINE=InnoDB; Query OK, 0 rows affected (0.016 sec) Records: 0 Duplicates: 0 Warnings: 0 MariaDB [mydb]> ALTER TABLE wp_snp_stats ENGINE=InnoDB; Query OK, 0 rows affected (0.015 sec) Records: 0 Duplicates: 0 Warnings: 0 MariaDB [mydb]> ALTER TABLE wp_es_pluginconfig ENGINE=InnoDB; Query OK, 1 row affected (0.014 sec) Records: 1 Duplicates: 0 Warnings: 0
Повторите первую команду, чтобы проверить, есть ли таблицы, возвращающие для MyISAM.
MariaDB [mydb]> SELECT CONCAT('ALTER TABLE ',TABLE_NAME,' ENGINE=InnoDB;') FROM INFORMATION_SCHEMA.TABLES WHERE ENGINE='MyISAM' AND table_schema = 'mydb'; Empty set (0.003 sec)
Хорошо, теперь у вас есть все таблицы базы данных с использованием механизма хранения данных InnoDB.
См. также:
Как найти размеры базы данных в MySQL / MariaDB на сервере
Как сбросить пароль root MySQL или пароль root MariaDB
Как установить и использовать MariaDB на Ubuntu 18.04
Как удалить учетную запись пользователя MySQL / MariaDB в Linux / Unix