MySQL 8.0 atteint sa fin de vie en avril 2026. La 8.4 LTS prend le relais - mais la migration n'est pas transparente. Voici tout ce qui change concrètement.
MySQL 8.0 atteint sa fin de vie en avril 2026. La 8.4, première version LTS du nouveau modèle Oracle (support jusqu’en 2032), prend le relais. Mais entre les deux, il y a un bon paquet de changements qui ne sont pas transparents : scripts de réplication qui plantent, applications qui ne se connectent plus, performances InnoDB qui changent sans prévenir.
Cet article fait le tour de ce qui change concrètement, de ce qui casse, et de ce qu’il faut anticiper avant de migrer.
La 8.4 n’est pas une mise à jour mineure. C’est un nettoyage massif de dette technique accumulée depuis la série 5.x, combiné à un recalibrage complet des defaults pour du matériel moderne.
Ce qui casse
mysql_native_password désactivé par défaut
C’est probablement le changement qui fera le plus de dégâts en production. Le plugin mysql_native_password est désactivé par défaut. Toute application qui l’utilise encore (vieux connecteurs PHP, scripts legacy) ne pourra plus se connecter.
En attendant la mise à jour des connecteurs :
# my.cnf
[mysqld]
mysql_native_password=ON
Le plugin sera définitivement supprimé dans la série 9.x. C’est un sursis, pas une solution.
La variable default_authentication_plugin n’existe plus non plus. Utilisez authentication_policy à la place.
La terminologie MASTER / SLAVE supprimée
Ce n’est plus un avertissement de dépréciation. Les anciennes commandes provoquent des erreurs de syntaxe :
| Supprimé | Remplacement |
|---|---|
CHANGE MASTER TO | CHANGE REPLICATION SOURCE TO |
START SLAVE | START REPLICA |
STOP SLAVE | STOP REPLICA |
SHOW SLAVE STATUS | SHOW REPLICA STATUS |
SHOW MASTER STATUS | SHOW BINARY LOG STATUS |
RESET MASTER | RESET BINARY LOGS AND GTIDS |
Toutes les options MASTER_* dans CHANGE REPLICATION SOURCE TO (MASTER_HOST, MASTER_USER, MASTER_PASSWORD…) sont remplacées par leurs équivalents SOURCE_*.
Pensez à vérifier vos scripts, vos outils de monitoring, vos playbooks Ansible. Si MASTER ou SLAVE traîne quelque part dans vos configurations, ça plantera au démarrage.
Nouveaux mots réservés
MANUAL, PARALLEL, QUALIFY et TABLESAMPLE sont désormais des mots réservés. Si vous avez des colonnes ou des alias non quotés avec ces noms, vous aurez des erreurs de syntaxe.
Autres suppressions notables
AUTO_INCREMENTsur une colonneFLOATouDOUBLE→ erreur. Migrez vers un type entier avant l’upgrade.expire_logs_days→ supprimé. Utilisezbinlog_expire_logs_seconds.FLUSH HOSTS→ supprimé. UtilisezTRUNCATE TABLE performance_schema.host_cache.mysql_upgrade,mysqlpump→ supprimés. L’upgrade se fait automatiquement au démarrage du serveur. Utilisezmysqldumpou MySQL Shell pour les dumps.WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS()→ supprimé. UtilisezWAIT_FOR_EXECUTED_GTID_SET().
Les defaults InnoDB : tout change
MySQL 8.4 aligne les valeurs par défaut d’InnoDB sur le matériel d’aujourd’hui (SSD, multi-core). Si vos benchmarks changent après migration, c’est probablement à cause de ça :
| Variable | 8.0 | 8.4 |
|---|---|---|
innodb_io_capacity | 200 | 10 000 |
innodb_flush_method (Linux) | fsync | O_DIRECT |
innodb_log_buffer_size | 16 Mo | 64 Mo |
innodb_adaptive_hash_index | ON | OFF |
innodb_change_buffering | all | none |
innodb_numa_interleave | OFF | ON |
innodb_use_fdatasync | OFF | ON |
innodb_buffer_pool_instances | 8 | Dynamique (CPU/RAM) |
innodb_read_io_threads | 4 | CPU/2 (min 4) |
innodb_parallel_read_threads | 4 | CPU/8 (min 4) |
temptable_max_ram | 1 Go | 3% de la RAM (1-4 Go) |
temptable_use_mmap | ON | OFF |
La philosophie : innodb_io_capacity à 200, c’était calibré pour des disques rotatifs. innodb_flush_method en fsync, c’était du double-buffering inutile avec le page cache de l’OS. innodb_change_buffering activé, c’était une optimisation pour l’I/O aléatoire qui n’a plus de sens sur SSD.
Si vous avez tuné ces valeurs manuellement dans votre my.cnf, pas de souci - vos valeurs prennent le dessus. Sinon, attendez-vous à des changements de comportement.
Sécurité renforcée
- TLS 1.0 et 1.1 supprimés. Seuls TLS 1.2 et 1.3 sont acceptés.
- Chiffrements faibles rejetés. Les connexions doivent utiliser du perfect forward secrecy, SHA2, et AES-GCM.
- Validation des certificats TLS au démarrage. La nouvelle variable
tls_certificates_enforced_validationempêche le serveur de démarrer avec un certificat invalide. - Nouveaux privilèges granulaires :
FLUSH_PRIVILEGES(remplace l’usage deRELOADpourFLUSH PRIVILEGES),OPTIMIZE_LOCAL_TABLE,SET_ANY_DEFINER. - Plugins keyring migrés vers des composants :
keyring_file→component_keyring_file,keyring_encrypted_file→component_keyring_encrypted_file.
Les nouveautés utiles
Tagged GTIDs. Nouveau format UUID:TAG:NUMBER (tag de 8 caractères max). Permet de catégoriser les transactions par application ou par tenant. Nécessite le privilège TRANSACTION_GTID_TAG.
EXPLAIN amélioré. EXPLAIN FORMAT=JSON INTO @variable pour capturer un plan d’exécution dans une variable. EXPLAIN FOR SCHEMA schema_name pour analyser une requête dans le contexte d’un autre schéma.
Histogrammes automatiques. ANALYZE TABLE t AUTO UPDATE rafraîchit les histogrammes automatiquement quand InnoDB recalcule les statistiques.
INTERSECT et EXCEPT optimisés. Utilisation de hash tables au lieu de tables temporaires. Activé par défaut via hash_set_operations.
Group Replication. Consistency par défaut passe à BEFORE_ON_PRIMARY_FAILOVER (avant : EVENTUAL). Garbage collection préemptif en mode single-primary. Downgrades in-place supportés au sein de la série 8.4.x.
mysqldump --output-as-version. Génère des dumps compatibles avec les anciennes versions (BEFORE_8_2_0, BEFORE_8_0_23). Utile pendant la période de migration.
La migration vers MySQL 8.4 demande un minimum de préparation : vérifiez vos scripts de réplication, testez vos connecteurs avec caching_sha2_password, et validez le comportement InnoDB sur un environnement de staging. Un backup complet avant de toucher à la production reste, comme toujours, indispensable.
Pour les détails exhaustifs, la documentation officielle MySQL 8.4 et le guide de migration Percona couvrent l’ensemble des changements.
