MySQLTuner v2.9.3: Deep Engine Diagnostics, TLS 1.3 & MySQL 8.4/9.x Security Hardening, and AI MCP Skills

Discover all the new features in MySQLTuner v2.9.3: deep InnoDB AHI & Performance Schema stage profiling, MySQL 8.4+/9.x TLS detection, origin-aware MariaDB deprecation checks, AI MCP skills, and MySQL 9.7 LTS / 26.7 & MariaDB 13.0 support.

MySQLTuner v2.9.3 Cover

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 escapes sys schema view queries, and skips legacy disabled information_schema status/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 --pass or --login-path credentials fail, MySQLTuner reports the error once and exits immediately (exit 1) instead of cascading through debian.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 stdio and 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 online OPTIMIZE / ALTER TABLE ... ENGINE=InnoDB remediation commands.
  • Clean JSON Exports (--prettyjson / --outputfile): Enabling --prettyjson now 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_version now 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 missing lspci or storcli binaries returned 0 from which(), preventing spurious sh: 1: 0: not found errors when a file named 0 existed in the working directory.
  • Autonomous Issue Triage & Upstream Sync (#1041–#1044): Added an automated triage, English translation, and upstream synchronization engine for major/MySQLTuner-perl GitHub 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

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.