![]()
La communauté open-source est ravie d’annoncer la sortie de MySQLTuner v2.9.3, une version majeure alliant nouvelles capacités d’audit, durcissement de la sécurité et modernisation de son ingénierie interne. Après les avancées de la version 2.9.2 sur Galera Cluster et l’option --skipworkload, cette version 2.9.3 enrichit considérablement les diagnostics bas niveau du moteur InnoDB et du Performance Schema, élimine les faux positifs TLS sur MySQL 8.4+/9.x ainsi que sur les variables dépréciées MariaDB 11.x–13.0, étend le serveur IA Model Context Protocol (MCP) avec de nouvelles compétences (Skills), et unifie sa chaîne de build 100 % en Perl natif.
Voici le tour d’horizon complet de toutes les nouveautés et différences introduites depuis la version v2.9.2.
1. Nouveaux Diagnostics Moteur & Performance Schema
MySQLTuner v2.9.3 inaugure une série de sous-routines d’audit spécialisées pour identifier avec précision les goulots d’étranglement internes, l’éviction des caches de métadonnées et la contention des verrous :
A. Profilage des Stages et Événements d’Attente (audit_pfs_stage_profiling)
L’exploitation du performance_schema franchit un nouveau cap (#1037). MySQLTuner analyse désormais les stages d’exécution SQL et la latence des attentes sur les mutex globaux, permettant aux DBA de distinguer instantanément les ralentissements liés aux entrées/sorties disque (I/O), la contention de verrous internes ou la saturation CPU.
B. Audit de l’Adaptive Hash Index InnoDB (audit_innodb_ahi)
Sous forte concurrence, l’index de hachage adaptatif (AHI) d’InnoDB peut devenir un point de contention majeur sur les verrous rw-latch s’il est mal partitionné ou inadapté au profil de requêtes (#1038). La nouvelle fonction audit_innodb_ahi évalue :
* Le ratio d’efficacité AHI : Compare les recherches par hachage (Adaptive hash searches) aux parcours d’arbres B-Tree classiques.
* Le dimensionnement des partitions : Audite innodb_adaptive_hash_index_parts au regard de la concurrence réelle du serveur.
C. Détection du Thrashing du Cache de Définitions de Tables (audit_table_definition_cache)
Au-delà de table_open_cache, les instances hébergeant des milliers de tables ou de partitions subissent souvent une pression silencieuse sur le dictionnaire de métadonnées (#1040). MySQLTuner calcule désormais le taux de remplissage et le rythme d’éviction (Open_table_definitions vs Opened_table_definitions) pour alerter en cas de thrashing du table_definition_cache.
D. Audit des Variables Obsolètes et Détection d’Origine MariaDB (audit_deprecated_variables)
Les montées de version majeures (MySQL 8.0 → 8.4 → 9.7 ou MariaDB 10.11 → 11.4 → 12.3/13.0) échouent fréquemment à cause de paramètres obsolètes restés dans my.cnf (#1022) :
* Détection des variables obsolètes et synonymes : Identifie automatiquement les directives dépréciées ou renommées.
* Filtrage intelligent par origine sur MariaDB (GLOBAL_VALUE_ORIGIN) : MariaDB 11.1+ conserve tx_isolation comme alias déprécié dans SHOW VARIABLES, et MariaDB 10.10+ déprécie innodb_prefix_index_cluster_optimization. Auparavant, une instance par défaut déclenchait un faux positif. Désormais, MySQLTuner v2.9.3 interroge information_schema.SYSTEM_VARIABLES.GLOBAL_VALUE_ORIGIN et n’émet une alerte que si la variable a été explicitement configurée par l’administrateur (CONFIG, COMMAND-LINE ou SQL).
[OK] TLS/SSL is enabled (detected via performance_schema.tls_channel_status)
[!!] Table definition cache thrashing detected: Open_table_definitions (400/400) with high eviction rate
[!!] Variable tx_isolation is explicitly configured (CONFIG) and deprecated since MariaDB 11.1 (use transaction_isolation)
E. Traçabilité des Erreurs SQL & Exports Statistiques CSV
- Capture d’anomalies et traces SQL (
log_sql_trace) : Enregistre les erreurs d’exécution SQL inattendues dans un tampon de diagnostic structuré (#1034). - Export CSV statistique des requêtes (
--dumpdir) : L’option--dumpdirgénère désormais un export CSV d’analyse statistique des requêtes, corrige l’échappement des vues du schémasyset ignore proprement les anciennes vues désactivées deinformation_schema. - Ancres de documentation officielles (
get_doc_anchor/get_doc_url) : Chaque recommandation pointe désormais vers l’ancre exacte de la documentation officielle MySQL ou de la base de connaissances MariaDB (#1031).
2. Sécurité, Audit TLS 1.3 & Fiabilisation de l’Authentification
A. Audit des Protocoles TLS et Suites de Chiffrement (audit_tls_ciphers_protocols)
MySQLTuner v2.9.3 inspecte finement les versions protocolaires (tls_version) et les suites de chiffrement actives (#1039), signalant les protocoles obsolètes (TLSv1, TLSv1.1) et les algorithmes faibles tout en validant l’adoption de TLSv1.2 et TLSv1.3.
B. Détection TLS Multi-Niveaux pour MySQL 8.4+ et 9.x
Dans MySQL 8.4 LTS et MySQL 9.x, les variables historiques have_ssl et have_openssl ont été définitivement supprimées (dépréciées depuis la 8.0.26). Les outils d’audit classiques en déduisaient à tort que le chiffrement TLS/SSL était désactivé (✘ TLS/SSL is disabled).
La version 2.9.3 implémente une chaîne de détection résiliente en trois étapes (compute_server_tls_status) :
1. Vérification de la variable have_ssl (pour MariaDB et MySQL ≤ 8.0).
2. Inspection du chiffrement de la session courante via Ssl_cipher / Current_tls_version.
3. Interrogation de performance_schema.tls_channel_status en repli (fallback), garantissant une détection exacte même lorsque MySQLTuner se connecte via un socket local non chiffré ou avec --skip-ssl sur MySQL 8.4+ et 9.x.
C. Diagnostics d’Échec de Connexion Explicites & Arrêt Immédiat (Fast-Fail)
- Affichage de l’erreur réelle du client : Au lieu d’afficher systématiquement « identifiants invalides » au moindre échec de connexion, MySQLTuner remonte désormais l’erreur exacte du client MySQL/MariaDB (ex.
Client error: ERROR 2026 (HY000): SSL connection error: self-signed certificate) accompagnée d’une indication contextuelle TLS (erreur 2026/SSL) ou réseau (erreurs 2002 à 2005). - Arrêt immédiat sur identifiants explicites : Lorsqu’un mot de passe explicite (
--pass) ou un--login-pathéchoue, le script affiche l’erreur une seule fois et s’arrête immédiatement (exit 1) sans tenter en cascadedebian.cnf, les fichiers par défaut ou une invite interactive.
3. Découverte Automatique des Topologies Haute Disponibilité (discover_cluster_topology)
En complément des audits Galera et InnoDB Cluster de la v2.9.2, la version 2.9.3 introduit la découverte automatique de topologie (discover_cluster_topology, #1026). L’outil identifie et classifie de manière autonome l’architecture cible :
* Clusters Galera / Percona XtraDB Cluster (PXC) : État du nœud, fournisseur wsrep et appartenance au composant Primary.
* MySQL Group Replication / InnoDB Cluster : Détection des modes Single-Primary / Multi-Primary et santé des membres du groupe.
* Topologies Source / Réplica Asynchrones et Semi-Synchrones : Cartographie automatique des rôles source, réplica et relais.
4. Agent IA, Compétences (.agent/skills/) et Serveur MCP 2.0
MySQLTuner poursuit son évolution vers l’administration autonome pilotée par l’IA en renforçant son serveur Model Context Protocol (MCP) (build/mcp_server.py) :
- Transport SSE & Conformité JSON-RPC 2.0 (#1001) : Le serveur MCP prend désormais en charge le transport Server-Sent Events (SSE) en plus de
stdio, avec une gestion stricte des codes d’erreur JSON-RPC 2.0 et des garde-fous d’exécution. - Trois Nouvelles Compétences Diagnostiques IA (AI Skills) :
analyze_buffer_pool(#1003) : Calculs de dimensionnement du Buffer Pool InnoDB, taux de succès du cache et analyse du vidage des pages sales (dirty pages).diagnose_replication_lag(#1005) : Diagnostic de latence de réplication, cohérence GTID et saturation des threads de réplication parallèle.detect_fragmented_tables(#1007) : Calcul du ratio de fragmentation, estimation de l’espace disque récupérable et génération des commandes de défragmentation en ligne.- Export JSON Propre (
--prettyjson/--outputfile) : L’utilisation de--prettyjsonactive désormais automatiquement l’export JSON et garantit qu’aucun message de log console ne vient polluer le fichier généré via--outputfile.
5. Support des Nouveaux Moteurs : MySQL 9.7 LTS, MySQL 26.7 et MariaDB 13.0
Pour suivre l’accélération des cycles de publication MySQL et MariaDB, la v2.9.3 centralise la gestion des versions supportées dans une source unique de vérité (build/ci_matrix.json), synchronisée automatiquement avec endoflife.date :
- Support de MySQL 9.7 LTS, MySQL 26.7 et MariaDB 13.0 : Prise en charge complète des nouvelles versions MySQL 9.7 (LTS), MySQL 26.7 (support court terme), MariaDB 12.3 (LTS) et MariaDB 13.0 (support court terme), aux côtés de MySQL 8.4 LTS, MySQL 8.0 (support legacy) et MariaDB 10.11 / 11.4 / 11.8 LTS.
- Distinction Claire des Cycles de Vie : La fonction
validate_mysql_versionaffiche désormais explicitement les mentions(LTS)ou(short-term support)dans les rapports d’audit.
| Moteur SGBD | Versions LTS Supportées | Versions Court Terme / Legacy |
|---|---|---|
| MySQL | 8.4 LTS, 9.7 LTS |
26.7 (Court terme), 8.0 (Legacy) |
| MariaDB | 10.11 LTS, 11.4 LTS, 11.8 LTS, 12.3 LTS |
13.0 (Court terme) |
6. Chaîne de Build 100 % Perl, Triage Autonome & 748 Tests Unitaires
Sous le capot, la version 2.9.3 franchit un palier majeur en matière de qualité logicielle :
- Migration Complète des Outils de Build en Perl Pur : Les scripts Python/Shell (
release_gen.py,genFeatures.sh, scripts CVE/EOL) ont été réécrits et consolidés en Perl natif (sync_eol_dates.pl,sync_supported_versions.pl,validate_release.pl,validate_roadmap.pl,check_doc_links.pl,check_changelog_gate.pl,release_orchestrator.pl) (#1023–#1033). - Fonctions de Calcul Pures & Fuzzing (#1048) : Les formules de calcul mémoire (
calculate_memory_allocation,calculate_per_thread_buffers,calculate_server_buffers) ont été isolées dans des sous-routines pures validées par des tests de mutation et de fuzzing, portant la suite à 153 fichiers de test et 748 assertions. - Fiabilisation de la détection RAID matériel (
which()) : Correction d’un cas limite où l’absence des binaireslspcioustorcliretournait0, évitant l’erreursh: 1: 0: not foundlorsqu’un fichier nommé0était présent dans le répertoire courant. - Système Autonome de Triage et Traduction d’Issues (#1041–#1044) : Déploiement d’un moteur automatisé de qualification, de traduction en anglais et de synchronisation avec le dépôt amont
major/MySQLTuner-perl.
Installer ou Mettre à Jour vers MySQLTuner v2.9.3
La mise à jour est immédiate et sans dépendance externe :
wget http://mysqltuner.pl/ -O mysqltuner.pl
chmod +x mysqltuner.pl
./mysqltuner.pl
Pour générer un audit JSON directement exploitable par vos agents IA :
perl mysqltuner.pl --agent-json --outputfile=audit_v293.json