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-root
Code 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-root
Code language: JavaScript (javascript)
Vous pouvez facilement restaurer avec cette commande :
wp db import before-engine-change.sql --allow-root
Code 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.sql
Code 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-root
Code language: JavaScript (javascript)
Comparez avec la version InnoDB :
wp db query "SHOW TABLE STATUS WHERE Engine = 'InnoDB'" --allow-root
Code 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.