![]()
The open-source database community is proud to announce the release of MySQLTuner v2.9.3, a landmark feature, security, and engineering release. Following the high-availability and workload profiling improvements of v2.9.2, version 2.9.3 expands deep storage engine telemetry, resolves critical MySQL 8.4+ / 9.x TLS and MariaDB 11.x–13.0 deprecation false positives, enriches the Model Context Protocol (MCP) AI agent ecosystem, and migrates the entire build and release governance pipeline to zero-dependency pure Perl.
Here is a complete overview of everything introduced between v2.9.2 and v2.9.3.
1. Deep Engine & Performance Schema Diagnostics
MySQLTuner v2.9.3 introduces a suite of specialized auditing subroutines to pinpoint internal contention, cache thrashing, and cryptographic weaknesses:
A. Performance Schema Stage & Wait Event Profiling (audit_pfs_stage_profiling)
Wait event and stage analysis via performance_schema has been significantly deepened (#1037). MySQLTuner now inspects stage profiling bottlenecks and global mutex wait latencies, helping DBAs distinguish between I/O bound stalls, lock contention, and CPU-intensive SQL stages.
B. InnoDB Adaptive Hash Index (AHI) Auditing (audit_innodb_ahi)
On high-concurrency workloads, InnoDB’s Adaptive Hash Index can become a source of rw-latch contention if improperly partitioned or if the workload does not benefit from hash lookups (#1038). The new audit_innodb_ahi engine evaluates:
* AHI Hit Ratio: Calculates the ratio of adaptive hash searches vs. non-hash b-tree searches.
* Partition Sizing: Audits innodb_adaptive_hash_index_parts against active concurrency to prevent latch bottlenecks.
C. Table Definition Cache Thrashing Detection (audit_table_definition_cache)
Beyond table_open_cache, metadata pressure on schemas with thousands of tables or partitions often hits table_definition_cache (#1040). MySQLTuner now calculates the fill ratio and eviction rate (Open_table_definitions vs Opened_table_definitions) to detect metadata cache thrashing early.
D. Obsolete Variables, Synonyms & Origin-Aware MariaDB Checks (audit_deprecated_variables)
Upgrading across major versions (MySQL 8.0 → 8.4 → 9.7 or MariaDB 10.11 → 11.4 → 12.3/13.0) often fails due to obsolete configuration directives (#1022):
* Deprecated Variables & Synonyms Audit: Automatically flags obsolete variables and legacy synonyms across MySQL and MariaDB.
* Origin-Aware MariaDB Deprecation (GLOBAL_VALUE_ORIGIN): MariaDB 11.1+ still exposes tx_isolation as a deprecated alias in SHOW VARIABLES, and MariaDB 10.10+ deprecates innodb_prefix_index_cluster_optimization. Previously, default containers triggered false deprecation warnings. MySQLTuner v2.9.3 queries information_schema.SYSTEM_VARIABLES.GLOBAL_VALUE_ORIGIN and alerts only when those variables are explicitly set via CONFIG, COMMAND-LINE, or 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. SQL Error Trace Logging & Statistical CSV Dumps
- SQL Error Trace & Anomaly Capture (
log_sql_trace): Captures unexpected SQL errors and query execution anomalies into a structured diagnostic trace buffer (#1034). - Statistical Statement Analysis in
--dumpdir: When exporting schema and diagnostic artifacts via--dumpdir, MySQLTuner now exports statistical statement analysis to CSV, properly escapessysschema view queries, and skips legacy disabledinformation_schemastatus/variables views. - Documentation Anchors (
get_doc_anchor/get_doc_url): Recommendations now map directly to official MySQL Reference Manual and MariaDB Knowledge Base anchors (#1031).
2. Security, TLS Ciphers & Authentication Hardening
A. TLS Cipher & Protocol Auditing (audit_tls_ciphers_protocols)
MySQLTuner v2.9.3 inspects active tls_version and cipher suites (#1039), flagging deprecated protocols (TLSv1, TLSv1.1) and weak cipher algorithms while verifying modern TLSv1.2 and TLSv1.3 enforcement.
B. Multi-Stage TLS Detection for MySQL 8.4+ and 9.x
In MySQL 8.4 LTS and MySQL 9.x, the legacy have_ssl and have_openssl system variables were removed (deprecated since 8.0.26). Tools relying solely on have_ssl falsely reported ✘ TLS/SSL is disabled even on fully encrypted servers.
MySQLTuner v2.9.3 implements a resilient three-step TLS detection chain (compute_server_tls_status):
1. Checks have_ssl (for MariaDB and MySQL ≤ 8.0).
2. Inspects the active session’s Ssl_cipher / Current_tls_version status.
3. Queries performance_schema.tls_channel_status as a fallback when connecting over an unencrypted local socket or --skip-ssl client session on MySQL 8.4+ and 9.x.
C. Explicit Login Failure Diagnostics & Fast-Fail Behavior
- Real Client Error Surfacing: Instead of generically reporting “invalid credentials” on every connection failure, MySQLTuner now surfaces the exact MySQL/MariaDB client error (e.g.,
Client error: ERROR 2026 (HY000): SSL connection error: self-signed certificate) accompanied by contextual TLS hints (error 2026/SSL) or network hints (errors 2002–2005). - No Fallback on Explicit Credentials: When explicit
--passor--login-pathcredentials fail, MySQLTuner reports the error once and exits immediately (exit 1) instead of cascading throughdebian.cnf, defaults files, or interactive prompts.
3. High-Availability Topology Autodiscovery (discover_cluster_topology)
Building on v2.9.2’s Galera and InnoDB Cluster checks, v2.9.3 introduces unified cluster topology autodiscovery (#1026). discover_cluster_topology automatically classifies the target instance across:
* Galera Cluster / Percona XtraDB Cluster (PXC): Node state, wsrep provider status, and primary component membership.
* MySQL Group Replication / InnoDB Cluster: Single-primary vs. multi-primary role resolution and member health.
* Asynchronous & Semi-Synchronous Source/Replica Topologies: Automatic detection of source, replica, and multi-tier relay roles.
4. AI Agent Skills & MCP Server 2.0 Enhancements
MySQLTuner continues to lead AI-assisted database administration by expanding its Model Context Protocol (MCP) server (build/mcp_server.py) and .agent/skills/ catalog:
- Hardened JSON-RPC 2.0 & SSE Transport (#1001): The MCP daemon now supports both
stdioand Server-Sent Events (SSE) transports, strict JSON-RPC 2.0 error code compliance, and safety guardrails for autonomous execution. - Three New Pre-Packaged AI Diagnostic Skills:
analyze_buffer_pool(#1003): Deep InnoDB buffer pool sizing, hit ratio, and dirty page flush math.diagnose_replication_lag(#1005): Replication latency, GTID synchronization, and parallel worker saturation diagnostics.detect_fragmented_tables(#1007): Fragmentation ratio detection, reclaimable disk space calculation, and onlineOPTIMIZE/ALTER TABLE ... ENGINE=InnoDBremediation commands.- Clean JSON Exports (
--prettyjson/--outputfile): Enabling--prettyjsonnow automatically activates JSON export mode and prevents CLI console logs from contaminating the target--outputfile.
5. Next-Gen Engine Support: MySQL 9.7 LTS, MySQL 26.7 & MariaDB 13.0
Database release cadences are evolving rapidly, and v2.9.3 introduces a centralized, single-source-of-truth version matrix (build/ci_matrix.json) synchronized directly with endoflife.date:
- New Short-Term & LTS Releases Supported: Adds official support and validation for MySQL 9.7 (LTS), MySQL 26.7 (short-term support), MariaDB 12.3 (LTS), and MariaDB 13.0 (short-term support), alongside MySQL 8.4 LTS, MySQL 8.0 (legacy supported), and MariaDB 10.11 / 11.4 / 11.8 LTS.
- Distinct Lifecycle Labels:
validate_mysql_versionnow clearly distinguishes between(LTS)and(short-term support)releases in audit reports.
| Database Engine | Supported LTS Cycles | Short-Term / Legacy Supported |
|---|---|---|
| MySQL | 8.4 LTS, 9.7 LTS |
26.7 (Short-Term), 8.0 (Legacy) |
| MariaDB | 10.11 LTS, 11.4 LTS, 11.8 LTS, 12.3 LTS |
13.0 (Short-Term) |
6. Pure Perl Build Toolchain, Autonomous Issue Triage & 748 Unit Tests
Behind the scenes, v2.9.3 delivers massive software engineering and quality assurance upgrades:
- 100% Pure Perl Build & Release Toolchain: Migrated
release_gen.py,genFeatures.sh, and CVE/EOL synchronization scripts into pure Perl (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). - Pure Calculation Subroutines & Adversarial Fuzzing (#1048): Core memory and ratio equations (
calculate_memory_allocation,calculate_per_thread_buffers,calculate_server_buffers) were refactored into pure functions, backed by mutation testing and adversarial fuzzing across 153 test files (748 assertions). - Hardware RAID
which()Guard: Fixed an edge case where missinglspciorstorclibinaries returned0fromwhich(), preventing spurioussh: 1: 0: not founderrors when a file named0existed in the working directory. - Autonomous Issue Triage & Upstream Sync (#1041–#1044): Added an automated triage, English translation, and upstream synchronization engine for
major/MySQLTuner-perlGitHub issues.
Getting Started with MySQLTuner v2.9.3
Upgrade your local copy of mysqltuner.pl today to benefit from the new diagnostics and MySQL 8.4/9.7 & MariaDB 13.0 compatibility:
wget http://mysqltuner.pl/ -O mysqltuner.pl
chmod +x mysqltuner.pl
./mysqltuner.pl
Or run an AI-ready JSON audit directly:
perl mysqltuner.pl --agent-json --outputfile=audit_v293.json