Repository navigation
Releases
Releases · major/MySQLTuner-perl
v2.9.3
Release Notes - v2.9.3
Date: 2026-10-21
📝 Executive Summary
2.9.3 2026-10-21
- chore(build): consolidate EOL and CVE scripts in pure Perl and add get_version.sh (#1024)
- chore(build): standardize metadata headers across all build scripts (#1029)
- feat(build): migrate release_gen.py and genFeatures.sh to pure Perl (#1023)
- feat(ci): implement validate_roadmap.pl for schema and link integrity (#1025)
- feat(ci): implement ci_matrix.json for centralized supported versions matrix (#1027)
- feat(ci): implement validate_release.pl for unified pre-publish validation (#1028)
- feat(ci): implement check_doc_links.pl for documentation link auditing (#1030)
- feat(ci): implement check_changelog_gate.pl for release artifacts schema verification (#1032)
- feat(ci): implement release_orchestrator.pl for automated SemVer release flow (#1033)
- feat(engine): implement MySQL boolean normalization subroutines (#1021)
- feat(engine): add audit_deprecated_variables for obsolete variables and synonyms (#1022)
- feat(engine): implement get_doc_anchor and get_doc_url for documentation anchors (#1031)
- feat(engine): implement SQL error trace logging and query anomaly capture (#1034)
- feat(engine): implement audit_pfs_stage_profiling for stage and wait event analysis (#1037)
- feat(engine): implement audit_innodb_ahi for adaptive hash index partitions and hit ratio (#1038)
- feat(engine): implement audit_tls_ciphers_protocols for cipher and TLS version audit (#1039)
- feat(engine): implement audit_table_definition_cache for cache thrashing detection (#1040)
- feat(ha): implement discover_cluster_topology for Galera, Group Replication and Replicas (#1026)
- feat(mcp): harden JSON-RPC 2.0 error handling, safety guardrails and SSE transport (#1001)
- feat(skill): add analyze_buffer_pool AI diagnostic skill to MCP server (#1003)
- feat(skill): add diagnose_replication_lag AI diagnostic skill to MCP server (#1005)
- feat(skill): add detect_fragmented_tables AI diagnostic skill to MCP server (#1007)
- feat(triage): implement autonomous issue triage & diagnostic engine (#1041)
- feat(triage): add upstream synchronization and triage for major/MySQLTuner-perl (#1042)
- feat(triage): add live triage and closing runner for major/MySQLTuner-perl (#1043)
- feat(triage): add English translation engine for major/MySQLTuner-perl comments (#1044)
- feat(engine): pure calculation subroutines, memory decomposition, and CLI contract hardening (#1048)
- feat(engine): add statistical statement analysis CSV export in dumpdir
- feat(versions): add MariaDB 13.0 and MySQL 26.7 (short-term releases) to supported version validation with distinct (LTS) / (short-term support) labels
- feat(versions): make build/ci_matrix.json (lts, legacy_supported, short_term) the single source of validate_mysql_version cycles via build/sync_supported_versions.pl
- feat(build): add --update-matrix (atomic rewrite of build/ci_matrix.json from endoflife.date) and --check (drift guard, no write) to sync_eol_dates.pl
- fix(ci): allow 'release' scope in commit and changelog compliance auditor (#1047)
- fix(ci): refine audit_logs warning filter to prevent false positives on deprecation advice
- fix(engine): fix sys views query escaping and dumpdir initialization in select_csv_file
- fix(engine): skip legacy disabled status and variables views in information_schema dump
- fix(triage): address CodeRabbit review recommendations on PR #989
- fix(build): resolve numeric comparison warning, sort direction, LTS detection and regenerate hint (--generate) in sync_eol_dates.pl
- fix(build): read legacy whitelist from ci_matrix.json and audit the generated version block in sync_eol_dates.pl
- fix(security): detect server TLS via Ssl_cipher and performance_schema.tls_channel_status when have_ssl is absent (false "TLS/SSL is disabled" on MySQL 8.4+/9.x)
- fix(auth): surface the real mysql client error with TLS/network hints on login failure instead of always reporting invalid credentials
- fix(auth): stop after a login failure with explicit --pass/--login-path credentials instead of retrying other methods (error printed once)
- fix(engine): report MariaDB tx_isolation only when explicitly configured (GLOBAL_VALUE_ORIGIN), worded as deprecated since 11.1
- fix(engine): report innodb_prefix_index_cluster_optimization as deprecated (MariaDB >= 10.10, when explicitly configured) instead of removed
- fix(engine): treat which() "not found" (0) as missing in lspci/storcli hardware RAID detection (no more "sh: 1: 0: not found" when the working directory contains an entry named 0)
- fix(cli): auto-enable json export in prettyjson mode and prevent CLI log output from contaminating outputfile
- fix(engine): harden my_mkdir_p for absolute path creation across platforms and avoid uninitialized warnings in print helpers
- test(build): add unit_build_headers.t validating build script header compliance (#1029)
- test(build): add unit_cve_update.t validating pure Perl CVE and EOL scripts (#1024)
- test(build): add unit_release_gen.t validating pure Perl release generator (#1023)
- test(ci): add unit_roadmap_validation.t validating roadmap schema (#1025)
- test(ci): add unit_ci_matrix.t validating CI version matrix and markdown alignment (#1027)
- test(ci): add unit_release_validation.t validating release pre-flight checks (#1028)
- test(ci): add unit_doc_link_auditor.t validating reference link integrity (#1030)
- test(ci): add unit_changelog_gate.t validating conventional commits and release schema (#1032)
- test(ci): add unit_release_orchestrator.t validating SemVer bumps and dry runs (#1033)
- test(ci): decompose repro_native_parsing.t into granular structured subtests (#1035)
- test(ci): decompose test_issue_863.t into granular structured subtests (#1036)
- test(engine): add unit_boolean_normalization.t validating boolean parsing (#1021)
- test(engine): add unit_deprecated_vars_audit.t validating deprecation rules (#1022)
- test(engine): add unit_doc_anchors.t validating topic anchor and KB URL mappings (#1031)
- test(engine): add unit_sql_trace_logging.t validating trace buffer and diagnostic report (#1034)
- test(engine): add unit_pfs_stage_profiling.t validating stage bottlenecks and mutex waits (#1037)
- test(engine): add unit_innodb_ahi.t validating search hit ratios and partition sizing (#1038)
- test(engine): add unit_tls_ciphers.t validating deprecated TLS versions and weak ciphers (#1039)
- test(engine): add unit_table_definition_cache.t validating fill ratio and eviction rate (#1040)
- test(ha): add unit_topology_autodiscovery.t validating topology classification (#1026)
- test(mcp): add unit_mcp_protocol.t validating standard JSON-RPC 2.0 error codes and SSE endpoints (#1001)
- test(skill): add unit_skill_buffer_pool.t validating InnoDB buffer pool calculations (#1003)
- test(skill): add unit_skill_replication.t validating replication lag and thread diagnostics (#1005)
- test(skill): add unit_skill_fragmentation.t validating table fragmentation checks (#1007)
- test(triage): add unit and E2E suites for issue triage engine (#1041)
- test(triage): add unit_upstream_syncer.py for major/MySQLTuner-perl (#1042)
- test(ci): guard END cleanup blocks against uninitialized variables on skipped tests (#1046)
- test(engine): add adversarial fuzzing, mutation testing, and pure metrics unit tests (#1048)
- test(engine): add unit tests for dumpdir statistical analysis, query escaping, and directory creation
- test(engine): add unit tests for information_schema view filtering in dumpdir
- test(versions): add unit_version_control.t (incl. LTS vs short-term label checks) and expand version coverage in test_vulnerabilities.t
- test(build): add generated support markdown structure checks (ordering, row format, regenerate hint) to unit_cve_update.t
- test(security): add unit_tls_status_detection.t validating TLS detection without have_ssl
- test(auth): add unit_login_error_reporting.t and update cli_validation.t for real client error reporting
- test(versions): add unit_supported_versions_sync.t and extend unit_ci_matrix.t with short_term / legacy_supported checks
- test(engine): add unit_mariadb_var_origin.t validating origin-based MariaDB deprecated variable detection
- test(auth): add unit_login_explicit_failure.t validating single error report and no fallback after explicit credentials fail
- test(auth): trap exit() in test_issue_605.t and v2_8_41_features.t now that failed explicit credentials stop mysql_setup
- test(build): add unit_eol_matrix_update.t validating ci_matrix.json update, layout round-trip and --check guard
- test(engine): add unit_which_missing_binary.t validating that no system command runs with a missing lspci/storcli binary
- test(cli): add unit_outputfile_json.t validating clean json export and nested directory creation
- ci(triage): add autonomous issue triage workflow and Makefile targets (#1041)
- ci(versions): add sync_supported_versions.pl --check step to pull_request.yml and Makefile targets sync_versions / check_versions
- docs(mcp): fix Mermaid diagram syntax and quoting in architecture guides (#1045)
- docs(mcp): update AI agent skills, architecture diagrams, and integration guide (#1048)
- docs(versions): update mysql_support.md and mariadb_support.md from official EOL API
- docs(ci): document the supported versions single-source check in .agent/GITHUB_ACTIONS.md
- docs(ci): document sync_eol_dates.pl --check / --update-matrix in .agent/GITHUB_ACTIONS.md
- docs(report): regenerate FEATURES.md with TLS detection and login error reporting subroutines
- docs(report): record version-support patch review and live validation findings (MySQL 8.4/9.7, MariaDB 10.11-13.0) in POTENTIAL_ISSUES.md
- docs(docs): align supported test targets with ci_matrix.json (LTS, legacy supported, short-term) and document TLS detection fallback and explicit-credential login failure behaviour (README.md, fr, it, ru)
- docs(docs): document TLS detection chain, login failure reporting,...
v2.9.2
Release Notes - v2.9.2
Date: 2026-08-20
📝 Executive Summary
2.9.2 2026-08-20
- chore(deps): replace abandoned cz-conventional-changelog with @commitlint/cz-commitlint (#587)
- feat(galera): add network queue, PK certification, and split-brain quorum diagnostics (#975)
- feat(main): enhance MySQL InnoDB Cluster & Group Replication diagnostics (#976)
- feat(main): add --skipworkload option to skip workload analysis & traffic profiling (#986)
- fix(galera): harden wsrep options and status checks against uninitialized values (#975)
- fix(main): enhance storage detection for HW RAID controllers (AVAGO/LSI MegaRAID) (#957)
- fix(main): fall back to /usr/share/mysqltuner for vulnerabilities.csv (#985)
- fix(versions): fix boolean evaluation of 0 EOL dates in sync_eol_dates.pl
- fix(ci): resolve DB_PASS from multi-db-docker-env .env file in test_ha.sh
- test(cve): add unit test unit_cvefile_fallback.t for downstream cvefile fallback resolution (#985)
- test(galera): add unit test unit_galera_enhanced.t for Galera diagnostics (#975)
- test(lab): add unit test test_issue_957.t for storage detection logic (#957)
- test(main): add unit tests for --skipworkload option and auto-increment optimization (#986)
- ci(build): add rules scope to check_compliance.pl allowed conventional commit scopes
- ci(lab): refine transport connection timeout pattern in output analyzer
- ci(ci): update and pin CodeQL and setup-mysql action digests
- docs(container): add comprehensive AI MCP server integration guides in English and French (#954)
- docs(docs): update all specification files with YAML frontmatter test bindings and mandatory Goal/Verification sections
- docs(docs): fix broken star history chart link (#981)
- docs(docs): enrich embedded POD documentation with comprehensive CLI reference
- docs(rules): align release governance, conventional commit, and git tagging rules (#739)
- docs(versions): synchronize v2.9.2 version strings, EOL LTS support checks, and multi-language README release links
- perf(main): optimize auto-increment exhaustion check by retrieving COLUMN_TYPE in initial join query (#986)
📈 Diagnostic Growth Indicators
| Metric | Current | Progress | Status |
|---|---|---|---|
| Total Indicators | 15 | 0 | 🛡️ |
| Efficiency Checks | 0 | 0 | 🛡️ |
| Risk Detections | 2 | 0 | 🛡️ |
| Information Points | 13 | 0 | 🛡️ |
🛠️ Internal Commit History
- docs(docs): enrich embedded POD documentation with comprehensive CLI reference (2da30f8)
- docs: regenerate release notes (b19edbc)
- test(cve): add unit test unit_cvefile_fallback.t for downstream cvefile fallback resolution (#985) (3a543f5)
- docs: regenerate release notes (ff00112)
- fix(galera): harden wsrep options and status checks against uninitialized values (#975) (59b7b1b)
- docs: regenerate release notes (e04320d)
- feat(main): sync upstream PR 985 downstream cvefile fallback and workflow digests (#985) (0214cc7)
- docs: regenerate release notes (b25684e)
- feat(main): add --skipworkload option and optimize auto-increment checks (#986) (d6b368b)
- style: tidy mysqltuner.pl (e51880d)
- docs: regenerate release notes (31b0911)
- docs(docs): update all documentation and specifications for v2.9.2 sync (5113118)
- docs: regenerate release notes (f5727b7)
- fix(ci): resolve DB_PASS from multi-db-docker-env .env file in test_ha.sh (792d35f)
- docs: regenerate release notes (3fb9cbf)
- style: tidy mysqltuner.pl (8630383)
- docs: regenerate release notes (4a02536)
- ci(build): add rules scope to check_compliance.pl allowed conventional commit scopes (8472003)
- docs: regenerate release notes (ef385fb)
- docs(rules): align release governance, conventional commit, and git tagging rules (#739) (1c47ff0)
- docs: regenerate release notes (1dbed6b)
- docs(mcp): update all README language files with AI integration chapter and links (26a2de8)
- docs: regenerate release notes (4797a59)
- docs(mcp): add comprehensive AI MCP server integration guides in English and French (#954) (fe37eb9)
- docs: regenerate release notes (1a70e82)
- fix(main): enhance storage detection for HW RAID controllers (AVAGO/LSI MegaRAID) (#957) (bd361e2)
- chore(deps): update github/codeql-action digest to d1ba80a (#973) (9cefafb)
- chore(deps): lock file maintenance (#974) (580d17f)
- chore(deps): update shogo82148/actions-setup-mysql digest to 3dcedf7 (#967) (14cf8e4)
- chore(deps): update ubuntu:latest docker digest to 3131b4c (bde344b)
- chore(deps): update softprops/action-gh-release digest to 3d0d988 (#968) (ed8ced9)
- chore(deps): update github/codeql-action digest to e4fba86 (#966) (be53988)
- chore(deps): update docker/login-action digest to dbcb813 (#965) (67acd5e)
- chore(deps): pin dependencies (#964) (a29311e)
- chore(deps): update alpine docker tag to v3.24 (a119f22)
- chore(deps): update actions/checkout action to v7 (d126c1f)
- chore(deps): lock file maintenance (86b04d7)
⚙️ Technical Evolutions
➕ CLI Options Added
--action--agent-json--description--expected_outcome--findings--id--impact_score--requires_restart--risk_description--risk_level--rollback_statement--skipworkload--statement--topic--type
✅ Laboratory Verification Results
- Automated TDD suite passed.
- Multi-DB version laboratory execution validated.
- Performance indicator delta analysis completed.
Deliverables
Standalone Script & Data
| Asset | Checksum |
|---|---|
mysqltuner.pl |
[sha256] |
basic_passwords.txt |
[sha256] |
vulnerabilities.csv |
[sha256] |
Docker Images
docker pull jmrenouard/mysqltuner:2.9.2
docker pull jmrenouard/mysqltuner:latestChecksums (.sha256) are available in the assets list below.
v2.9.1
Release Notes - v2.9.1
Date: 2026-07-27
📝 Executive Summary
2.9.1 2026-07-27
- chore: automated project metadata update
- chore: remove execution.log from git repository and sync docs
- feat: recommend slow query log when disabled (#517)
- fix: update documentation and code
- ci: optimize pre-commit hook to only run unit tests when code, tests, or dependencies are modified
- chore(build): allow build scope in compliance auditor
- chore(build): rewrite dev_sync and doc_sync in Perl for consistency
- chore(deps): update actions/checkout action to v7.0.0 (#961)
- chore(deps): update all non-major dependencies (@commitlint/cli, @commitlint/config-conventional, brace-expansion, commitizen)
- chore(deps): update devops-infra/action-commit-push digest to f27e0951b748268e6ac8d91861eeac5bc2bd36a8 (#958)
- chore(deps): update devops-infra/action-commit-push digest to fa0c793 (#929)
- chore(deps): update docker/build-push-action digest to 53b7df9 (#939)
- chore(deps): update docker/login-action digest to abd2ef4 (#962)
- chore(deps): update docker/login-action digest to af1e73f (#940)
- chore(deps): update docker/setup-buildx-action digest to bb05f3f5519dd87d3ba754cc423b652a5edd6d2c (#959)
- chore(deps): update github/codeql-action digest to 99df26d4f13ea111d4ec1a7dddef6063f76b97e9
- chore(deps): update shogo82148/actions-setup-mysql digest to 076e636 (#930)
- chore(deps): update softprops/action-gh-release digest to 718ea10 (#934)
- chore(deps): update ubuntu:latest docker digest to 53958ec (#935)
- chore(deps): update ubuntu:latest docker digest to b7f48194d4d8b763a478a621cdc81c27be222ba2206ca3ca6bc42b49685f3d9e
- chore(docs): add custom rule for GitHub issue creation
- chore(docs): implement rule to decompose unit tests into readable segments
- chore(docs): update agent best practices and customization rules
- chore(main): add doc links in localhost warnings and support custom local subdomains
- chore(main): hide hostname, ssl, and replication warnings on localhost (#933)
- chore(releases): start v2.9.1 branch with version bump and dependency updates
- feat(cli): implement agent-json flag returning structured actionable schema (#955, jmrenouard#63)
- feat(cli): resolve remote memory, socket override, and temptable sizing issues (#923)
- feat(container): implement dockerized auditing daemon and zero-dependency MCP server (#954, jmrenouard#62)
- feat(main): audit InnoDB lock monitors and print all deadlocks configuration
- feat(main): enhance error log parser with OOM, semaphore waits, file limits, and page corruption alerts (#953)
- feat(main): implement advanced log parser and lock monitoring (#953, jmrenouard#61)
- feat(main): implement experimental Correlation Engine linking PFS wait events and CPU load with log events
- feat(metadata): fix test badge and update version references in READMEs
- feat(report): add pgBadger-inspired query, lock, and temp table visual analytics to HTML report (#791)
- feat(report): add verbose timings, step percentages, and snapshot summary
- feat(report): finalize HTML report, YAML output, and historical comparison
- feat(report): implement HA InnoDB Cluster diagnostics and Group Replication checks
- feat(report): implement advanced Galera Cluster 4 and PXC 8.0 diagnostics
- feat(report): implement phase 6 deep engine tuning and mark phase 8 completed
- feat(report): implement workload traffic profiling and query waits analysis (#960)
- fix(container): create default /defaults.cnf in Dockerfile and document volume mounts (#932)
- fix(main): add undefined/NULL guards to hr_num to resolve uninitialized warnings (#904)
- fix(main): address PR #931 code review feedback and enhance test validations
- fix(main): calculate query cache efficiency using Com_select on MariaDB (MDEV-4981) (#927)
- fix(main): exclude MariaDB user roles and support zero-config TLS (#936, #937)
- fix(main): only recommend increasing innodb_log_buffer_size when log waits occur (#938)
- fix(main): query events_errors_summary_global_by_error safely (#956, jmrenouard#64)
- fix(main): resolve uninitialized warnings in auto-increment audit and fix split delimiters (#913)
- fix(main): support '0' and 'OFF' value representations when checking slow query log status (#517) (finalized implementation)
- test(hook): verify pre-commit hook runs tests when test files change
- test(lab): add HA topology E2E tests, MCP server E2E test, and dedicated output analyzer
- test(lab): add HA validation profiles (galera.json, innodb_cluster.json, replication.json)
- test(lab): add build/analyze_mt_output.pl dedicated output analyzer with HA profile support
- test(lab): add build/test_ha.sh E2E orchestrator for Galera, InnoDB Cluster, and Replication topologies
- test(lab): add e2e_mcp_server.t for MCP server E2E validation with live MariaDB container
- test(lab): add unit test test_issue_810.t for issue 810 (#810)
- test(lab): expand unit tests for issue #517 to verify alternative representations of slow query log active state (#517)
- test(test): add unit tests for issues #553, #605, #671, #770, #774, #777, #781, #782, #783, #796 (#553, #605, #671, #770, #774, #777, #781, #782, #783, #796)
- test(test): add unit tests for issues #863, #864, #869, #874, #875, #881, #887 (#863, #864, #869, #874, #875, #881, #887)
- test(test): add unit tests for issues #896, #900, #904, #913, #923, #927, #932, #938 (#896, #900, #904, #913, #923, #927, #932, #938)
- test(test): add unit tests for potential issues and split unit_coverage_boost3
- test(test): add unit_agent_json.t to validate actionable JSON schema (#955)
- test(test): add unit_deadlocks_pfs.t to validate InnoDB deadlock PFS checks
- test(test): add unit_eol_warnings.t to validate version support warnings
- test(test): add unit_galera_pxc.t to validate Phase 9 Galera cluster checks
- test(test): add unit_ha_cluster.t to validate Phase 7 HA cluster checks
- test(test): add unit_log_parser.t to validate advanced log parsing and correlation (#953)
- test(test): add unit_mcp_server.t to validate JSON-RPC protocol compliance (#954)
- test(test): add unit_replication_internals.t to validate Phase 8 replication features
- test(test): add unit_version_helpers.t to validate version caching and helpers
- test(test): add unit_workload_traffic.t to validate Phase 11 workload profiling (#960)
- test(test): split unit_coverage_boost3.t into three smaller test files
- test(test): update workload traffic and HA cluster unit tests to use tab-delimited mock data
- test(test): verify replication terminology and checksums in unit tests (#888)
- ci(build): implement static SQL linter and fix PFS deadlock error query
- docs(metadata): promote HTML reports and add E2E examples
- docs(metadata): remove timestamp from doc-sync generated files
- docs(releases): regenerate release notes and changelog
- docs(roadmap): add Phase 22 for High Availability & Replication Auto-Discovery
- docs(roadmap): add Phase 24 (Boolean Normalization), Phase 25 (Deprecated Variables), Phase 26 (Subtest Decomposition) to ROADMAP.md
- docs(roadmap): add Phase 27 (Multi-Language Normalization), Phase 28 (CI Version Matrix), Phase 29 (Publish Pipeline), Phase 30 (Build Stack Rationalization) from transversal audit
- docs(roadmap): group strategic technical evolutions into phases 18 to 21
- docs(roadmap): link strategic technical evolutions specification and enforce changelog staging
- docs(roadmap): mark Phase 12 as completed in ROADMAP.md
- docs(roadmap): mark Phase 16 and 17 as completed in ROADMAP.md
- docs(roadmap): update Phase 7, Phase 9, Phase 10, and Phase 11 status to completed in ROADMAP.md
- docs: add AGENT.md integration guide for AI and MCP server
- docs: add LightPath as sponsor, relocate coffee button, and use star-history chart
- docs: add MCP and AI integration guide for MySQL database tuning
- docs: generate FEATURES.md
- docs: generate end-of-life status files
- docs: link recent features to GitHub issues in Changelog
- docs: link recent features to jmrenouard fork issues in Changelog
- docs: regenerate release notes
- docs: update potential issues log with Phase 9 Galera audit findings
- docs: update potential issues log with Renovate dependency dashboard analysis
- docs: update potential issues log with release v2.9.0 and v2.9.1 audit results
- docs: update repository links to major/MySQLTuner-perl and add GitHub stars badge
- style: tidy mysqltuner.pl
📈 Diagnostic Growth Indicators
| Metric | Current | Progress | Status |
|---|---|---|---|
| Total Indicators | 15 | +1 | 🚀 |
| Efficiency Checks | 0 | 0 | 🛡️ |
| Risk Detections | 2 | 0 | 🛡️ |
| Information Points | 13 | +1 | 🚀 |
🛠️ Internal Commit History
- docs(releases): add GitHub issue references to Changelog and Release Notes (e464db9)
- Merge branch 'major/master' into v2.9.1 to resolve GitHub Action workflow conflicts (1f12622)
- chore: automated project metadata update (4df668a)
- chore(deps): update docker/login-action digest to abd2ef4 (#962) (e1da863)
- docs: regenerate release notes (98564e4)
- style: tidy mysqltuner.pl (01bb574)
- chore(deps): update actions/checkout digest to d23441a (#961) (2a7fbcb)
- docs: regenerate release notes (e45de80)
- docs: regenerate release notes (d6d0b3e)
- style: tidy mysqltuner.pl (b493719)
- ci(build): implement static SQL linter and fix PFS deadlock error query (48e0472)
- docs: regenerate release notes (317883d)
- docs: regenerate release notes (6551702)
- chore(deps): update docker/setup-buildx-action digest to bb05f3f (#959) (fa2ab7d)
- chore: automated project metadata update (504dce8)
- chore(deps): update devops-infra/action-commit-push digest to f27e095 (#958) (d943b35)
- docs: regenerate release notes (fe66f7f)
- fix(main): resolve uninitialized warnings in auto-increment audit and fix split delimiters (049b59a)
- docs: regenerate release notes (5340c55)
- fix(main): support '0' and 'OFF' value representations when checking slow query log status (#517) (b9f4083)
- docs:...
v2.9.0
Release Notes - v2.9.0
Date: 2026-07-05
📝 Executive Summary
2.9.0 2026-07-05
- chore: automated project metadata update
- chore: remove execution.log from git repository and sync docs
- feat: recommend slow query log when disabled (#517)
- feat: update Total buffers output message format to display temptable sizing when active.
- fix: update commit process
- fix: update documentation and code
- test: add socket preservation tests to test_issue_781.t.
- test: add unit test for remote host physical memory detection and validation (issue #796).
- test: add unit test for temptable output formatting in Total buffers.
- ci: optimize pre-commit hook to only run unit tests when code, tests, or dependencies are modified.
- chore(build): allow build scope in compliance auditor
- chore(build): rewrite dev_sync and doc_sync in Perl for consistency
- chore(deps): update devops-infra/action-commit-push digest to fa0c793 (#929)
- chore(deps): update shogo82148/actions-setup-mysql digest to 076e636 (#930)
- chore(main): add doc links in localhost warnings and support custom local subdomains
- chore(main): add roadmap to the whitelist of allowed scopes in compliance checks.
- chore(main): hide hostname, ssl, and replication warnings on localhost (#933)
- chore(main): whitelist deps and system commit scopes in check_compliance.pl to support Dependabot and host metrics commits.
- chore(metadata): add GitHub issue templates for bugs and feature requests
- feat(cli): create an agent-ready output format (JSON/YAML) so that MySQLTuner can be easily integrated by AI agents.
- feat(cli): resolve remote memory, socket override, and temptable sizing issues
- feat(main): recommend enabling slow query log if disabled (#517)
- feat(metadata): fix test badge and update version references in READMEs
- feat(report): add pgBadger-inspired query distribution, locking latency, and temp table memory/disk spill visual analytics to HTML report
- feat(report): add verbose execution timing measurements for each section, showing both elapsed time and its percentage relative to the total script execution time.
- feat(report): add verbose timings, step percentages, and snapshot summary
- feat(report): categorize recommendations in HTML report and add Connections/Performance panels, Storage engines table, and SQL modeling stats grid.
- feat(report): finalize HTML report, YAML output, and historical comparison
- feat(report): finalize a complete HTML report file beginning in v2.8.45.
- feat(report): implement Phase 13 sectional global indicators and KPIs
- feat(report): move dump_csv_files execution step to immediately before make_recommendations.
- feat(report): print an environment audit snapshot summary (server, user, RAM, swap, versions, uptime) right after get_all_vars.
- feat(report): support historical comparison of database diagnostics and performance metrics over time.
- fix(cli): add mutually exclusive guard for json and yaml options.
- fix(cli): preserve --socket in connection arguments when --host is specified.
- fix(main): add undefined and 'NULL' guards to hr_num to eliminate uninitialized value warnings.
- fix(main): add undefined/NULL guards to hr_num to resolve uninitialized warnings
- fix(main): address PR #931 code review feedback and enhance test validations
- fix(main): calculate health score early in historical comparison to ensure scores exist for trend analysis.
- fix(main): calculate query cache efficiency using Com_select on MariaDB (MDEV-4981)
- fix(main): calculate query cache efficiency using Com_select on MariaDB, where Com_select includes query cache hits (MDEV-4981).
- fix(main): exclude MariaDB user roles and support zero-config TLS
- fix(main): exclude MariaDB user roles from SSL remote user audit
- fix(main): format YAML null as tilde (~) and multiline values using literal block style.
- fix(main): guard InnoDB log file size and log size percentage checks against uninitialized variables.
- fix(main): guard version and version comment checks in MariaDB parallel replication and query cache blocks.
- fix(main): implement cached version comparison parser to eliminate uninitialized value warnings and improve performance.
- fix(main): only recommend increasing innodb_log_buffer_size when log waits occur
- fix(main): sanitize and redact sensitive credentials from json/yaml output exports.
- fix(main): skip local /proc/loadavg read during remote database audits.
- fix(main): support MariaDB 11.4+ zero-configuration TLS and avoid false missing certificate warnings
- fix(report): flush console output trace when opening raw log files late in dumpdir mode.
- fix(test): add undef fallbacks to human_size, hr_bytes and hr_bytes_rnd mocks in tests.
- test(hook): verify pre-commit hook runs tests when test files change
- test(lab): add unit test test_issue_480.t for table_open_cache_instances recommendation (#480)
- test(lab): add unit test test_issue_517.t for slow query log recommendations (#517)
- test(lab): add unit test test_issue_810.t for issue 810
- test(lab): add unit test test_issue_810.t for remote host forcemem MB interpretation correctness (issue #810)
- test(lab): add unit test test_issue_938.t for InnoDB write log efficiency
- test(lab): add unit tests for query cache efficiency logic on MySQL and MariaDB in tests/test_issue_927.t (renamed from tests/issue_927.t).
- test(lab): normalize all repro_issue_*.t and issue_*.t test file names to test_issue_*.t
- test(lab): split unit_coverage_boost4.t into smaller topic-oriented unit tests: unit_cli_helpers.t, unit_client_privileges.t, unit_cloud_commands.t, unit_fs_info.t, unit_os_vm.t
- test(lab): utilize isolated tempfile for mock json to avoid race conditions in tests/unit_phase13_kpis.t.
- test(report): add verbose timing and audit snapshot summary formatting checks to tests/verbose_timing.t.
- test(report): update HTML report unit tests to verify connections, performance, storage, and modeling HTML sections.
- test(security): add test cases for MariaDB role exclusion and zero-configuration TLS
- test(versions): add unit tests for version caching and comparisons, resolve redundant warnings, and use tempfile in tests/unit_versions.t.
- docs(metadata): promote HTML reports and add E2E examples
- docs(metadata): remove timestamp from doc-sync generated files
- docs(roadmap): link strategic technical evolutions specification and enforce changelog staging
- docs(roadmap): specify and implement Phase XIV pgBadger-inspired HTML report modules
- docs(roadmap): specify Phase XVI (AI Agent Integration) and Phase XVII (Dockerized MCP Daemon).
- docs: add LightPath as sponsor, relocate coffee button, and use star-history chart
- docs: regenerate release notes
- docs: update repository links to major/MySQLTuner-perl and add GitHub stars badge
📈 Diagnostic Growth Indicators
| Metric | Current | Progress | Status |
|---|---|---|---|
| Total Indicators | 15 | 0 | 🛡️ |
| Efficiency Checks | 0 | 0 | 🛡️ |
| Risk Detections | 2 | 0 | 🛡️ |
| Information Points | 13 | 0 | 🛡️ |
🛠️ Internal Commit History
- docs(releases): regenerate release notes and changelog (2ce031f)
- docs(metadata): promote HTML reports and add E2E examples (30d5255)
- docs: regenerate release notes (7e1cd64)
- feat(report): add pgBadger-inspired query, lock, and temp table visual analytics to HTML report (246e0c0)
- docs: regenerate release notes (272ff7d)
- docs: regenerate release notes (093984a)
- fix(main): only recommend increasing innodb_log_buffer_size when log waits occur (1aa3eaf)
- docs: regenerate release notes (385594b)
- docs: regenerate release notes (ae41134)
- docs: regenerate release notes (6db4faf)
- docs: regenerate release notes (9865449)
- fix(main): exclude MariaDB user roles and support zero-config TLS (aee6781)
- docs: regenerate release notes (f715c47)
- docs: regenerate release notes (d46e3c8)
- docs: regenerate release notes (38ecb2f)
- docs: regenerate release notes (3b9c75a)
- docs: regenerate release notes (2cfd624)
- chore(main): add doc links in localhost warnings and support custom local subdomains (9f67656)
- docs: regenerate release notes (b74e098)
- docs: regenerate release notes (0005a69)
- chore(build): allow build scope in compliance auditor (2bba15f)
- chore(build): rewrite dev_sync and doc_sync in Perl for consistency (645c3d9)
- chore(main): hide hostname, ssl, and replication warnings on localhost (#933) (4f3e70e)
- docs: regenerate release notes (be838ab)
- docs: regenerate release notes (389c4ad)
- docs: regenerate release notes (d424fae)
- docs: regenerate release notes (1575463)
- docs: regenerate release notes (7006061)
- feat(cli): resolve remote memory, socket override, and temptable sizing issues (7e3a39c)
- test(hook): verify pre-commit hook runs tests when test files change (41abef0)
- docs: regenerate release notes (9b9e007)
- ci: optimize pre-commit hook to only run unit tests when code, tests, or dependencies are modified (596df4c)
- docs: regenerate release notes (5759b73)
- fix: update documentation and code (1008ba4)
- docs: regenerate release notes (7fd2391)
- test(lab): add unit test test_issue_810.t for issue 810 (6ece0c3)
- docs: regenerate release notes (0b5c859)
- feat: recommend slow query log when disabled (#517) (da6d437)
- docs: add LightPath as sponsor, relocate coffee button, and use star-history chart (31e3638)
- docs: update repository links to major/MySQLTuner-perl and add GitHub stars badge (4cd208e)
- docs: regenerate release notes (a754147)
- fix(main): add undefined/NULL guards to hr_num to resolve uninitialized warnings (0a87482)
- docs(roadmap): link strategic technical evolutions specification and enforce changelog staging (136a977)
- docs: rege...
v2.8.45
Release Notes - v2.8.45
Date: 2026-06-04
📝 Executive Summary
2.8.45 2026-06-04
- chore: restore doc_sync.py utility script and run doc synchronization.
- feat: export both complete (unfiltered) and filtered CSV files for sys views in dumpdir.
- feat: filter system databases from PFS/sys schema analysis queries and dumpdir exports.
- feat: integrate temptable_max_ram into per-thread buffer memory calculations.
- feat: bypass temptable_max_ram logic if internal_tmp_mem_storage_engine is set to MEMORY or if the engine is MariaDB.
- feat: verify temptable_max_mmap against available disk space in tmpdir.
- feat: add InnoDB index/data ratio check and CSV dump for tables > 50,000 rows.
- feat: display Host/RAM info and Database Uptime in system_recommendations() under remote or cloud modes.
- feat: display database server uptime in all configurations inside get_system_info() and system_recommendations().
- fix: normalize dollar sign escaping in SQL queries to prevent syntax errors and shell interpolation failures.
- fix: skip x$ps_schema_table_statistics_io views in dumpdir schema exports to prevent execution failures on newer MariaDB releases.
- perf: optimize column exploration in mysql_tables by fetching engine and column details in bulk (reducing queries from 2N+3 to 2 per table).
- test: update schemadir.t and repro_no_index.t mocks to match the bulk queries.
- test: update unit tests to verify both filtered and unfiltered dumpdir exports.
- test: add unit tests for system database filtering logic.
- test: add unit tests for temptable memory limit calculations.
- test: add unit test for index/data ratio calculation logic.
- test: add unit tests for temptable_max_mmap disk space checks, MEMORY engine bypass, and MariaDB bypass.
- test: add complementary subtest for non-binding temptable_max_ram scenario to tests/issue_864.t.
- test: add unit tests for compliance checks, doc synchronization, and release files verification.
- test: add unit test for remote/cloud host recap in tests/unit_coverage_boost3.t.
📈 Diagnostic Growth Indicators
| Metric | Current | Progress | Status |
|---|---|---|---|
| Total Indicators | 14 | -1 | 🛡️ |
| Efficiency Checks | 0 | 0 | 🛡️ |
| Risk Detections | 2 | 0 | 🛡️ |
| Information Points | 12 | -1 | 🛡️ |
🛠️ Internal Commit History
- perf: optimize column exploration in mysql_tables (0e34fe9)
- chore: update documentation sync timestamp and execution logs (232918d)
- docs(metadata): update automatically generated README timestamp (24224ea)
- docs: regenerate release notes (34b3229)
- feat(cli): export both complete and filtered CSV files for sys views (ebd5409)
- test(lab): create tests/issue_923.t and restore tests/issue_864.t (be4bd30)
- chore: update execution logs and sync documentation timestamp (cab32f1)
- fix(test): only verify release tag consistency if ref is a tag in check_release_files.sh (a0a3341)
- docs(metadata): update automatically generated README timestamp (abe1eef)
- docs: regenerate release notes (748bb03)
- feat(cli): bypass temptable_max_ram on MEMORY/MariaDB and verify temptable_max_mmap (94a19ee)
- docs: generate USAGE.md (8d0ddeb)
- chore: release v2.8.45 (0347fad)
⚙️ Technical Evolutions
➕ CLI Options Added
--innodb_buffer_stats_by_schema--innodb_buffer_stats_by_table--processlist--schema_auto_increment_columns--schema_index_statistics--schema_object_overview--schema_redundant_indexes--schema_table_lock_waits--schema_table_statistics--schema_table_statistics_with_buffer--schema_tables_with_full_table_scans--schema_unused_indexes--session--statement_analysis--statements_with_errors_or_warnings--statements_with_full_table_scans--statements_with_runtimes_in_95th_percentile--statements_with_sorting--statements_with_temp_tables
➖ CLI Options Deprecated
--data--template
✅ Laboratory Verification Results
- Automated TDD suite passed.
- Multi-DB version laboratory execution validated.
- Performance indicator delta analysis completed.
Deliverables
Standalone Script & Data
| Asset | Checksum |
|---|---|
mysqltuner.pl |
[sha256] |
basic_passwords.txt |
[sha256] |
vulnerabilities.csv |
[sha256] |
Docker Images
docker pull jmrenouard/mysqltuner:2.8.45
docker pull jmrenouard/mysqltuner:latestChecksums (.sha256) are available in the assets list below.
v2.8.44
Release Notes - v2.8.44
Date: 2026-05-27
📝 Executive Summary
2.8.44 2026-05-27
- chore: implement compliance check script to enforce zero-dependency and single-file design.
- chore: implement post-checkout Git hook to automatically verify version consistency on checkout.
- feat: develop automated end-of-life (EOL) date synchronization check script to audit LTS versions in CI.
- feat: develop automated specification consistency auditor and Spec-to-Test Mapping Matrix.
- feat: develop LTS API auto-bumping utility with GitHub Actions integration.
- feat: develop version bump dry-run simulation script and post-commit Git hook for automated doc sync.
- feat: re-implement HTML report option (--reportfile) removing CPAN Text::Template dependency (#791).
- feat: make unit-tests target quiet/clean by default in Makefile, and add unit-tests-debug target for verbose debugging.
- fix: resolve false positive AUTO_INCREMENT near max capacity warning on BIGINT UNSIGNED columns with low row count by checking type-specific limits using information_schema (#913).
- fix: refactor version parsing regexes in mysql_version_eq() and helper functions to prevent uninitialized value warnings.
- fix: resolve compile-time and runtime warnings in unit tests, mock override ordering, and definedness checks.
- fix: fix $fh scoping bug in process_sysbench_metrics where file handle was declared inside if(!open) guard and went out of scope before read loop.
- fix: fix $fh scoping bug in historical_comparison (same pattern as process_sysbench_metrics).
- fix: fix hash initialization bug in merge_hash (my %result = {} changed to my %result = ()).
- test: add unit test for type-specific auto_increment capacity warnings.
- test: update issue_37.t to support new information_schema query format.
- test: add unit test for HTML report generation logic.
- test: expand unit tests with parameterized test matrix covering supported/outdated versions across major versions 5, 8, 9, 10, and 11.
- test: add unit_system.t to verify architecture, transport, and formatting helpers, increasing test coverage to 61%.
- test: add unit_coverage_boost.t covering 12 pure utility functions (trim, escape_html, hr_bytes, merge_hash, etc.).
- test: add unit_coverage_boost2.t covering 17 I/O, MariaDB engine, and print wrapper functions (redwrap, file2array, mariadb_tokudb, etc.).
- test: add unit_coverage_boost3.t with deep-mocked tests for 22 diagnostic subroutines (mysql_plugins, mysql_indexes, system_recommendations, check_query_anti_patterns, process_sysbench_metrics, etc.).
- test: improve subroutine coverage from 55% to 92% (154 out of 167 subroutines).
- ci: configure CI workflows to trigger on all branches and execute compliance checks.
- ci: add EOL date check step to CI workflow.
- docs: enhance release-manager workflow with branch lifecycle and checkout hook instructions.
- docs: add Docker installation instructions (docker pull/run) and release location to all README files (EN, FR, IT, RU).
📈 Diagnostic Growth Indicators
| Metric | Current | Progress | Status |
|---|---|---|---|
| Total Indicators | 15 | 0 | 🛡️ |
| Efficiency Checks | 0 | 0 | 🛡️ |
| Risk Detections | 2 | 0 | 🛡️ |
| Information Points | 13 | 0 | 🛡️ |
🛠️ Internal Commit History
- docs: add Docker install instructions and releases location in all READMEs (e1b77ed)
- docs: regenerate release notes (849e4d2)
- feat(test): clean unit tests output and fix mock compilation warnings (35ecd52)
- chore(ci): ignore execution.log in gitignore (a9ca211)
- docs: regenerate release notes (acd852c)
- fix(cli): resolve false positive AUTO_INCREMENT near max capacity warning (#913) (39d96eb)
- chore(ci): update execution log with generate_usage outputs (1c60bff)
- feat(ci): implement version dry-run validation, update LTS support tests, and update execution log (a78c747)
- feat(ci): implement EOL sync, version dry-run validation, and git hooks (b59a2f7)
- docs: generate USAGE.md (225e3e4)
- feat(versions): update validate_mysql_version with 9.6 support and remove 9.5 (d2ca4d6)
- feat(report): re-implement HTML report and cleanup templates (d3b6d3c)
⚙️ Technical Evolutions
➕ CLI Options Added
--compress-dump--dump-limit
➖ CLI Options Deprecated
--data--template
✅ Laboratory Verification Results
- Automated TDD suite passed.
- Multi-DB version laboratory execution validated.
- Performance indicator delta analysis completed.
Deliverables
Standalone Script & Data
| Asset | Checksum |
|---|---|
mysqltuner.pl |
[sha256] |
basic_passwords.txt |
[sha256] |
vulnerabilities.csv |
[sha256] |
Docker Images
docker pull jmrenouard/mysqltuner:2.8.44
docker pull jmrenouard/mysqltuner:latestChecksums (.sha256) are available in the assets list below.
v2.8.43
Release Notes - v2.8.43
Date: 2026-05-25
📝 Executive Summary
2.8.43 2026-05-25
- chore: bump version to 2.8.43.
- feat: add --compress-dump option to compress SQL schema dumps using gzip.
- feat: add --dump-limit option to limit row extraction count for CSV dumps.
- feat: export naming convention deviations and missing foreign keys to CSV files.
- feat: write schema export manifest files to track dumped files.
- feat: add unified health score breakdown to CLI output and HTML laboratory reports.
- feat: implement test output auditor script to scan test results for Perl execution errors and runtime warnings.
- fix: resolve invalid login credentials error by defaulting to root when only --pass is set and escaping single quotes in passwords (#781).
- fix: resolve fake aborted connections count increase during password strength checks (#900).
- fix: resolve EOF metadata corruption and duplicated configurations in Emacs block (#904).
- fix: prevent plaintext password leakage in weak password diagnostic messages.
- fix: implement symlink verification and atomic writes for aborted connects state file protection.
- fix: append transport-specific host and container identifiers in state file path to prevent collisions.
- fix: correct authentication plugin checks mock implementation in unit tests to prevent health score deduction bypass.
- test: strengthen authentication plugin checks and add verification suite for state file protections.
- test: add comprehensive test suite for weighted health score and score breakdowns.
- ci: optimize release notes generation to isolate branch changes.
- docs: complete documentation refresh synchronizing README.md, INTERNALS.md, USAGE.md, and all translated READMEs with v2.8.43 script capabilities.
- docs: improve authentication plugins algorithm labels and resolve absolute documentation links.
- perf: optimize --dumpdir performance by excluding heavy RDS/Aurora and internal metrics.
- refactor: catch explicit exception classes in build/release_gen.py to prevent masking system signals.
- refactor: replace generic file preview logic with explicit descriptive labeling for database audit artifacts.
- refactor: html report to get better information about each version.
📈 Diagnostic Growth Indicators
| Metric | Current | Progress | Status |
|---|---|---|---|
| Total Indicators | 15 | +2 | 🚀 |
| Efficiency Checks | 0 | 0 | 🛡️ |
| Risk Detections | 2 | 0 | 🛡️ |
| Information Points | 13 | +2 | 🚀 |
🧪 New Diagnostic Capabilities
ℹ️ New Information Points
- SKIPPING $info_pf_table
- SKIPPING $info_s_table
🛠️ Internal Commit History
- docs: complete documentation refresh for v2.8.43 (730cb54)
- feat: implement parallel run resource limits, post-test cleanup, and TAP output (8274dce)
- docs: sync project documentation and reorganize roadmap/potential issues (5c7e0fa)
- fix(ci): fix declared_refs and segment HTML report tables (e4fefe8)
- feat: release v2.8.43 with schema export improvements and security hardening (c7d45d2)
- docs: generate FEATURES.md (3b51bf5)
- docs: generate USAGE.md (c0d9c0f)
⚙️ Technical Evolutions
➕ CLI Options Added
--compress-dump--dump-limit
✅ Laboratory Verification Results
- Automated TDD suite passed.
- Multi-DB version laboratory execution validated.
- Performance indicator delta analysis completed.
Deliverables
Standalone Script & Data
| Asset | Checksum |
|---|---|
mysqltuner.pl |
[sha256] |
basic_passwords.txt |
[sha256] |
vulnerabilities.csv |
[sha256] |
Docker Images
docker pull jmrenouard/mysqltuner:2.8.43
docker pull jmrenouard/mysqltuner:latestChecksums (.sha256) are available in the assets list below.
v2.8.42
Release Notes - v2.8.42
Date: 2026-05-25
📝 Executive Summary
2.8.42 2026-05-25
- chore: bump version to 2.8.42.
- fix: resolve fake aborted connections count increase during password strength checks (#900).
- fix: resolve EOF metadata corruption and duplicated configurations in Emacs block (#904).
- ci: optimize release notes generation to isolate branch changes.
- perf: optimize --dumpdir performance by excluding heavy RDS/Aurora and internal metrics.
📈 Diagnostic Growth Indicators
| Metric | Current | Progress | Status |
|---|---|---|---|
| Total Indicators | 15 | +2 | 🚀 |
| Efficiency Checks | 0 | 0 | 🛡️ |
| Risk Detections | 2 | 0 | 🛡️ |
| Information Points | 13 | +2 | 🚀 |
🧪 New Diagnostic Capabilities
ℹ️ New Information Points
- SKIPPING $info_pf_table
- SKIPPING $info_s_table
🛠️ Internal Commit History
- docs: finalize changelog and release notes for v2.8.42 (81efefb)
- ci: optimize release notes generation to isolate branch changes (0bcf8bc)
- docs: sync changelog, release notes, memory database and add tests for v2.8.42 (e2a8bd8)
- docs: generate FEATURES.md (54b803c)
- style: tidy mysqltuner.pl (933038c)
- docs: update v2.8.42 release notes and optimize dumpdir exclusions (57b5e6e)
- chore: prepare release v2.8.42 (0a0aaeb)
⚙️ Technical Evolutions
✅ Laboratory Verification Results
- Automated TDD suite passed.
- Multi-DB version laboratory execution validated.
- Performance indicator delta analysis completed.
Deliverables
Standalone Script & Data
| Asset | Checksum |
|---|---|
mysqltuner.pl |
[sha256] |
basic_passwords.txt |
[sha256] |
vulnerabilities.csv |
[sha256] |
Docker Images
docker pull jmrenouard/mysqltuner:2.8.42
docker pull jmrenouard/mysqltuner:latestChecksums (.sha256) are available in the assets list below.
v2.8.41
Release Notes - v2.8.41
Date: 2026-05-17
📝 Executive Summary
2.8.41 2026-05-17
- chore: automated project maintenance and cleanup (extracted `RULES.md`, `MEMORY_DB.md`, `TESTS.md`).
- feat: enhance --forcemem and --forceswap to support human-readable memory units (B, K, M, G, T, P).
- feat: implement idiomatic Perl Boolean practices across the project (#34).
- feat: add recommendation for `table_open_cache_instances` based on CPU cores (#480).
- feat: improve syslog and systemd journal detection for error logs (#440).
- feat: initialize `$mysqllogin` to avoid uninitialized value warnings (#490).
- fix: filter MySQL CLI password warning from execute_system_command output.
- fix: prevent division by zero crash in percentage() with non-numeric values.
- fix: resolve SQL execution failure (return code 256) in MySQL 9.x containers by updating batch execution flags.
- fix: Restore compatibility with older Perl versions (by @jasongill).
- fix: wrap template loading in `get_template_model()` to avoid `uninitialized value` warnings during `require`.
- fix: allow `--updateversion` to work on hosts without `mysql`/`mariadb` installed (#36).
- fix: skip local SSL certificate warnings if they are in an inaccessible `datadir` (#33).
- fix: correct false positives in `check_removed_innodb_variables` by distinguishing real server variables from internal ones (#32).
- fix: improve join_buffer_size recommendation formatting in Variables to Adjust (#881).
- fix: suppress MySQL client warning regarding 'DISABLED' boolean value for SSL (#887).
- fix: correctly handle `--defaults-file` and `--defaults-extra-file` without dropping options (#605).
- fix: restore Debian maintenance account automatic login by using idiomatic boolean checks (#896).
- fix: include `tmp_table_size` in per-thread memory calculation for better accuracy (#864).
- fix: add retry mechanism for initial `SELECT VERSION()` query to improve connection resilience (#782).
- fix: prevent `AUTO_INCREMENT` capacity false positives for empty tables (#37).
- fix: refactor InnoDB Redo Log Capacity logic to be workload-based and avoid false positives (#714, #737, #777).
- fix: add guards against division by zero in calculations for improved stability (#435).
- fix: add truthiness guards to `mysql_innodb` and `mysql_stats` subroutines.
- fix: improve `which` logic for better container/minimal environment support.
- fix: enhance login failure reporting with detailed output.
- fix: handle Plesk Obsidian 18.0.76.5+ removing --show-password (#42).
- test: add validation tests for auth, missing args, and formatting.
- ci: enhance Quality Gate to strictly enforce zero-warning policy on GitHub Actions tests.
- ci: implement dynamic CI test environment detection by wrapping configuration extraction.
- ci: refactor GitHub Actions release and prerelease workflows to support dynamic versions and checksum generation.
- ci: refine audit_logs.pl to prevent false positive warnings on successful output.
- ci: migrate maintenance script to GitHub Actions.
- refactor: update CLI metadata to use `undef` as default for string/path options.
- refactor: replace non-idiomatic `eq '0'`, `ne 0`, etc., with standard truthiness checks.
- refactor: replace "master"/"slave" terminology with "source"/"replica" for cultural sensitivity (#888).
- chore(deps): update docker/setup-buildx-action action to v4.
- chore(deps): update docker/build-push-action action to v7.
- chore(deps): update docker/login-action action to v4.
- chore(deps): update softprops/action-gh-release action to v3.
📈 Diagnostic Growth Indicators
| Metric | Current | Progress | Status |
|---|---|---|---|
| Total Indicators | 12 | 0 | 🛡️ |
| Efficiency Checks | 0 | 0 | 🛡️ |
| Risk Detections | 2 | 0 | 🛡️ |
| Information Points | 10 | 0 | 🛡️ |
🛠️ Internal Commit History
- docs: consolidate governance agents and update release notes for v2.8.41 (9e1e8f8)
- ci: refine audit_logs.pl to prevent false positive warnings on successful output (cf49345)
- fix: resolve SQL execution failure in MySQL 9.x containers (b0f71de)
- style: tidy mysqltuner.pl (f8defd5)
- test: add validation tests for auth, missing args, and formatting (bd10c4b)
- feat: enhance --forcemem and --forceswap to support human-readable memory units (b357f7e)
- fix: handle Plesk Obsidian 18.0.76.5+ removing --show-password (#42) (632a4f9)
- feat: finalize release 2.8.41 (abdcb0e)
- ci: fix preflight scripts for changelog header and commitlint refname ambiguity (dd323a4)
- feat: release 2.8.41 (e95c3e9)
- style: tidy mysqltuner.pl (745c909)
- ci: refactor Github release definitions with pre-releases and deliverables support (1da1bb2)
- ci: enforce zero-warning policy and dynamic test env (80788de)
- feat: release 2.8.41 final stabilization (c337213)
- feat: release 2.8.41 final polish (a230c55)
- feat: release 2.8.41 final polish (14e3a31)
- feat: release 2.8.41 (b4a13e6)
⚙️ Technical Evolutions
- MySQL 9.x Container Fix: Resolved SQL execution failures (return code 256) in MySQL 9.x containers by updating batch execution flags.
- Audit Log Refinement: Prevented false positive warnings in
audit_logs.plwhen output contains successful[OK]markers. - Test Coverage: Added validation tests for authentication, missing arguments, and formatting edge cases.
- Upstream Sync: Rebased on
major/MySQLTuner-perl:masterto integrate latest dependency updates (commitlint v21, actions/checkout v6, non-major deps v20.5.3).
✅ Laboratory Verification Results
- Automated TDD suite passed.
- Multi-DB version laboratory execution validated.
- Performance indicator delta analysis completed.
Deliverables
Standalone Script & Data
| Asset | Checksum |
|---|---|
mysqltuner.pl |
[sha256] |
basic_passwords.txt |
[sha256] |
vulnerabilities.csv |
[sha256] |
Docker Images
docker pull jmrenouard/mysqltuner:2.8.41
docker pull jmrenouard/mysqltuner:latestChecksums (.sha256) are available in the assets list below.
v2.7.0
What's Changed
- readme typo by @gggeek in #799
- Improve regexes for log-file error and warning counts (fixed #797) by @jesusbagpuss in #798
- 714 # fix calculation of innodb_log_size_pct by @remc010 in #801
- Merge by @jmrenouard in #802
- new icons by @jmrenouard in #805
- Fixing #807 #808 #806 by @jmrenouard in #809
- Version 2.6.2 by @jmrenouard in #812
- Security recommendation version check bug - reg by @MASTERGOKUL in #814
- escape databases when suggesting migrating from MyIsam to InnoDB by @arossetti in #817
- Update .gitignore by @jmrenouard in #822
- --forcemem was being applied twice, the second time in bytes by @nicjansma in #821
- Fix update show slave status on mysql 8 > versions by @Lucas-atabey in #825
- Update mysqltuner.pl - Illegal division by zero at mysqltuner.pl lin… by @JaxxOlly in #832
- Restore colour to icons by @miken32 in #816
- Add Windows support by @MooM00 in #831
- Fix calculation of innodb_log_size_pct and improve safety checks for … by @jmrenouard in #833
- Update actions/checkout action to v5 by @renovate[bot] in #835
- fix/update some links by @FabioPedretti in #837
- Fix file permissions #836 by @jmrenouard in #838
- Update CVE and version staff by @jmrenouard in #839
- Fix division by zero error with MariaDB 10.8.0+ #830 by @jmrenouard in #840
- feat: add github action to build and push docker image by @jmrenouard in #842
- Fix innodb efficiency suggestion by @jmrenouard in #841
- chore(deps): update actions/checkout action to v5 by @renovate[bot] in #843
- chore(deps): update docker/build-push-action action to v6 by @renovate[bot] in #844
- Change branch name to 'master' in workflow by @jmrenouard in #846
- chore(deps): update docker/login-action action to v3 by @renovate[bot] in #845
- Your MySQL version 11.8.3-MariaDB-ubu2204 is EOL software. Upgrade soon by @ShaiMagal in #848
- feat: Improve innodb_redo_log_capacity recommendation by @jmrenouard in #849
- Correct Inaccurate Message for MariaDB by @devenbj in #851
- chore(config): migrate renovate config by @renovate[bot] in #850
New Contributors
- @gggeek made their first contribution in #799
- @remc010 made their first contribution in #801
- @MASTERGOKUL made their first contribution in #814
- @arossetti made their first contribution in #817
- @nicjansma made their first contribution in #821
- @Lucas-atabey made their first contribution in #825
- @JaxxOlly made their first contribution in #832
- @miken32 made their first contribution in #816
- @MooM00 made their first contribution in #831
- @ShaiMagal made their first contribution in #848
Full Changelog: v2.6.0...v2.7.0