![]()
MySQLTuner est l’un des utilitaires en ligne de commande open-source les plus fiables pour l’audit et l’optimisation des serveurs de bases de données. Écrit en Perl, sa simplicité, sa conception sans dépendance externe et ses conseils directement exploitables en ont fait un outil incontournable pour les administrateurs de bases de données (DBA), les ingénieurs DevOps et les administrateurs système du monde entier.
Avec la sortie de la version MySQLTuner v2.9.1, le projet franchit une étape historique en introduisant des mécanismes d’audit pilotés par l’intelligence artificielle (IA) et des diagnostics approfondis pour les architectures d’entreprise et de haute disponibilité (HA). Cette version fait le pont entre les diagnostics traditionnels en console et les workflows d’agents IA modernes en intégrant nativement un serveur MCP (Model Context Protocol) et un mode de sortie JSON structuré.
Voici une présentation détaillée des nouvelles fonctionnalités majeures, des changements architecturaux et des améliorations de diagnostic de cette version marquante.
1. Intégration IA : JSON structuré et serveur MCP
Le changement architectural le plus important de cette version 2.9.1 est de rendre MySQLTuner directement exploitable par les intelligences artificielles et les grands modèles de langage (LLM). L’affichage classique en console de MySQLTuner, optimisé pour la lecture humaine, est en effet difficile à parser de manière fiable pour un agent autonome.
Pour y remédier, la version 2.9.1 introduit deux innovations majeures :
- Mode JSON orienté Agent (
--agent-json) : Cette option désactive le formatage textuel classique et génère un flux JSON structuré. Chaque recommandation est enrichie de métadonnées clés : un identifiant unique, la thématique, des scores d’impact/risque, et surtout, la requête SQL de rollback associée. - Serveur MCP (Model Context Protocol) (
build/mcp_server.py) : MySQLTuner intègre désormais son propre serveur MCP stdio. Ce protocole permet à des agents IA (comme Claude ou des GPT personnalisés) de déclencher des audits, de récupérer des rapports en cache, d’appliquer des optimisations SQL sécurisées, et d’effectuer des rollbacks à l’aide d’un fichier d’état.
Schéma de séquence : Interaction entre l’Agent et le serveur MCP
Le diagramme ci-dessous illustre comment un Agent IA collabore avec le serveur MCP de MySQLTuner pour auditer une base de données, appliquer une recommandation, et faire marche arrière (rollback) si nécessaire :

Cette interaction rend le tuning de base de données totalement autonome et sécurisé, permettant aux agents IA de surveiller, ajuster et restaurer les configurations de performance sans intervention humaine directe.
2. Diagnostics approfondis pour InnoDB et la Haute Disponibilité
Au-delà de l’intégration IA, MySQLTuner v2.9.1 renforce et enrichit considérablement ses moteurs de diagnostics internes, validant plusieurs étapes clés de sa feuille de route (Roadmap) :
A. Analyse InnoDB en profondeur (Phase 6 complétée)
Les DBA gérant des bases de données volumineuses disposent désormais de métriques très précises sur le moteur InnoDB :
* Pression d’E/S et Purge Lag : Analyse de l’efficacité des lectures anticipées (read-ahead) et du retard de purge pour éviter la saturation de l’espace de transaction.
* Caches et verrous : Audit des configurations de change buffer et de l’Adaptive Hash Index (AHI) pour minimiser la contention de verrous.
* Alignement physique : Validation du doublewrite buffer, de fdatasync et de l’alignement des opérations d’écriture sur disque.
* Optimisation OS : Détection de l’interleave mémoire NUMA pour alerter sur les allocations de RAM sous-optimales.
* Spécificités MariaDB : Vérifications dédiées pour l’espace de table temporaire MariaDB et comptage des deadlocks via performance_schema.
B. Haute Disponibilité avec InnoDB Cluster (Phase 7 complétée)
L’outil détecte et audite désormais nativement les clusters MySQL basés sur la technologie InnoDB Cluster :
* Lecture des tables replication_group_members et member_stats de performance_schema.
* Audit du cache de messages de réplication par rapport à la RAM disponible.
* Validation du paramètre unreachable_majority_timeout et détection de MySQL Router.
C. Réplication avancée et cohérence GTID (Phases 8 & 10 complétées)
Les topologies de réplication classiques ou de type source/réplica bénéficient de contrôles plus stricts :
* Détection des écarts GTID : Recherche de trous ou de décalages de transactions dans le cluster.
* Sécurisation du relay log : Audit et recommandation de variables de sécurité telles que replica_skip_verify_binlog_checksum pour éviter la corruption de données.
* Parallélisation des workers : Inspection de la configuration de réplication parallèle et du suivi des dépendances (write-sets).
* Binlog compression & cache : Analyse du taux d’efficacité du cache de logs binaires et des ratios de compression.
* Vocabulaire moderne : Transition vers les termes source et replica (tout en documentant entre parenthèses les variables historiques master/slave).
D. Galera Cluster et Percona XtraDB (Phase 9 complétée)
Les audits des clusters Galera sont largement approfondis :
* Mesure des performances de la réplication en continu, des statistiques de certification et d’avortement.
* Dimensionnement du cache gcache (grâce à un nouvel outil d’analyse parse_size_bytes) et niveau de parallélisme des processeurs de réplication.
* Vérification de la conformité du strict mode PXC, du contrôle de flux (flow control), et analyse de la gigue (jitter) et de la latence réseau.
3. Profilage de charge et corrélation des journaux (Phase 12 complétée)
Grâce au nouveau moteur check_workload_traffic, les recommandations de MySQLTuner s’adaptent désormais à la charge de travail réelle :
* Empreintes des événements d’attente (Wait Events) : Identification des principaux goulots d’étranglement de l’instance.
* Taux de churn vs. Fragmentation : Analyse de la volatilité des données pour repérer les tables nécessitant des optimisations fréquentes.
* Saturation d’Auto-Increment : Alerte préventive avant que les clés primaires auto-incrémentées n’atteignent les limites physiques de leur type de données.
* Corrélation d’erreurs : Analyse des fichiers de logs (log error verbosity) et corrélation automatique des arrêts brutaux par manque de mémoire (OOM-killer), blocages de sémaphores, ou corruption avec les statistiques de charge.
4. Rigueur logicielle : Linter SQL et tests HA E2E
Pour intégrer ces nombreuses fonctionnalités tout en conservant une stabilité irréprochable, l’équipe a intégré de nouveaux outils de qualité dans sa chaîne de build :
- Linter SQL (
check_sql_linter.pl) : Analyseur statique conçu pour scanner le code source de MySQLTuner afin de détecter d’éventuelles erreurs SQL (casse des mots-clés, balance des parenthèses, etc.). Il a notamment permis de corriger la requête d’analyse de deadlocks Performance Schema en remplaçant la colonne inexistanteCOUNT_STARparSUM_ERROR_RAISED. - Harnais de test HA (
build/test_ha.sh) : Orchestre des environnements multi-conteneurs Docker pour valider automatiquement le comportement de MySQLTuner sur des clusters Galera, InnoDB Cluster et des topologies de réplication complexes. - Correction Slow Query Log (Issue #517) : Amélioration de la détection des états booléens comme
'0'ou'OFF'pour éliminer les faux positifs de diagnostic sur l’activation du journal des requêtes lentes.
Conclusion
La version v2.9.1 de MySQLTuner démontre qu’un script historique peut évoluer pour devenir un outil d’administration moderne et compatible avec l’IA. Que vous souhaitiez automatiser vos optimisations système à l’aide d’un agent via son serveur MCP, sécuriser un cluster Galera/InnoDB, ou scruter les entrailles de la mémoire d’InnoDB, MySQLTuner v2.9.1 est prêt.
Mettez à jour votre copie de mysqltuner.pl, lancez le serveur MCP, et simplifiez la maintenance de vos serveurs de bases de données grâce à l’IA !