Convertir des tables de base de données WordPress de MyISAM à InnoDB avec WP-CLI

Dans cet article, je vous montre comment convertir facilement vos tables de base de données WordPress du moteur MyISAM au moteur InnoDB avec WP-CLI.

Si vous vous demandez pourquoi vous voudriez effectuer cette conversion de base de données, je vous avais déjà parlé des améliorations d’InnoDB par rapport à MyISAM (tirer parti de plusieurs cœurs est assez impressionnant). On constate d’énormes améliorations du temps de réponse et une réduction de la charge du serveur après la conversion de MyISAM à InnoDB. Il existe également des différences d’index MySQL intéressantes entre les deux moteurs.

Commençons !

Conversion des tables WordPress de MyISAM à InnoDB avec WP-CLI

Vérifiez si certaines de vos tables utilisent MyISAM au lieu d’InnoDB:

wp db query "SHOW TABLE STATUS WHERE Engine = 'MyISAM'" --allow-rootCode language: JavaScript (javascript)

Si vous n’obtenez aucune sortie, il n’y a pas de tables MyISAM. Si vous obtenez une sortie, elle ressemblera à ceci :

+----------+--------+---------+------------+------+----------------+-------------+-----------------+--------------+-----------+----------------+---------------------+---------------------+---------------------+--------------------+----------+----------------+---------+
| Name     | Engine | Version | Row_format | Rows | Avg_row_length | Data_length | Max_data_length | Index_length | Data_free | Auto_increment | Create_time         | Update_time         | Check_time          | Collation          | Checksum | Create_options | Comment |
+----------+--------+---------+------------+------+----------------+-------------+-----------------+--------------+-----------+----------------+---------------------+---------------------+---------------------+--------------------+----------+----------------+---------+
| wp_posts | MyISAM |      10 | Dynamic    | 2579 |           1916 |     443644 | 28147497610655 |      4224000 |         0 |          11861 | 2017-08-19 21:56:47 | 2017-09-07 03:55:17 | 2017-08-19 21:56:48 | utf8mb4_unicode_ci |     NULL |                |         |
+----------+--------+---------+------------+------+----------------+-------------+-----------------+--------------+-----------+----------------+---------------------+---------------------+---------------------+--------------------+----------+----------------+---------+Code language: PHP (php)
Faites une sauvegarde de votre base de données avant de commencer !

Vous pouvez facilement sauvegarder la base de données avec cette commande :

wp db export before-engine-change.sql --all-tablespaces --add-drop-table --allow-rootCode language: JavaScript (javascript)

Vous pouvez facilement restaurer avec cette commande :

wp db import before-engine-change.sql --allow-rootCode language: JavaScript (javascript)

Voici un court script bash pour convertir toutes les tables de base de données WordPress MyISAM en InnoDB avec WP-CLI:

sudo -u www-data wp db query "SELECT CONCAT('ALTER TABLE ', TABLE_SCHEMA,'.', TABLE_NAME, ' ENGINE=InnoDB;') FROM information_schema.TABLES WHERE ENGINE = 'MyISAM' AND table_schema NOT IN ('information_schema', 'mysql', 'performance_schema')" --skip-column-names > db_optimize.sql
sudo -u www-data wp db query < db_optimize.sql
rm db_optimize.sqlCode language: JavaScript (javascript)

Et voilà ! Toutes vos tables sont désormais au format InnoDB.

Maintenant, vous pouvez vérifier s’il reste des tables MyISAM, vous ne devriez obtenir aucune sortie :

wp db query "SHOW TABLE STATUS WHERE Engine = 'MyISAM'" --allow-rootCode language: JavaScript (javascript)

Comparez avec la version InnoDB :

wp db query "SHOW TABLE STATUS WHERE Engine = 'InnoDB'" --allow-rootCode language: JavaScript (javascript)

Vous devriez obtenir une grande sortie de table montrant que toutes les tables ont été converties du moteur MyISAM au moteur InnoDB.

Vous avez un projet WordPress ou WooCommerce en tête? Transformez votre vision en réalité avec mon expertise reconnue.

Parlons de votre projet dès aujourd'hui »

Matt

Matt Biscay est développeur WordPress et WooCommerce certifié chez Codeable, ainsi que sysadmin qualifié et enseignant-chercheur. Passionné par le code performant et les solutions sécurisées, je m'efforce d'offrir une expérience utilisateur exceptionnelle sur chaque projet.

Vous avez aimé cet article ? Vous avez un projet en tête, n'hésitez pas à me contacter, je serai ravi d'en discuter avec vous !

Opinions