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.
Envie d'ajouter des fonctionnalités exceptionnelles à votre site WordPress ou WooCommerce? Je suis là pour vous aider.