Releases: major/MySQLTuner-perl
Release list
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
Release v2.6.0
February 2024 release
commit 4fdd801
Author: Jean-Marie Renouard jmrenouard@gmail.com
Date: Tue Feb 6 18:00:04 2024 +0100
Generate CVE list at 2024-02-06T17:59:02+01:00
commit dd2ed72
Author: Jean-Marie Renouard jmrenouard@gmail.com
Date: Tue Feb 6 17:58:57 2024 +0100
Indenting mysqltuner at 2024-02-06T17:58:52+01:00
commit 30d1d9e
Author: Jean-Marie Renouard jmrenouard@gmail.com
Date: Tue Feb 6 17:58:35 2024 +0100
Generate 2.5.2 sub version at 2024-02-06T17:58:35+01:00
commit b3a7765
Author: Jean-Marie Renouard jmrenouard@gmail.com
Date: Sun Feb 4 00:34:49 2024 +0100
Two separate garb install script with or without SSL
commit 27525ca
Author: Jean-Marie Renouard jmrenouard@gmail.com
Date: Sun Feb 4 00:31:54 2024 +0100
Fix issue in Buffer Pool instead of Log Buffer Pool
commit 65b1c13
Author: Jean-Marie Renouard jmrenouard@gmail.com
Date: Thu Jan 18 05:38:00 2024 +0100
#741 false positive in log error detection
commit 56d16e1
Merge: 3fd633b b608da0
Author: Jean-Marie Renouard jmrenouard@gmail.com
Date: Wed Jan 17 18:35:27 2024 +0100
Merge pull request #745 from FabioPedretti/master
Enable color by default when running on a terminal
commit b608da0
Author: Fabio Pedretti pedretti.fabio@gmail.com
Date: Thu Jan 11 11:27:25 2024 +0100
Enable color by default when running on a terminal
commit 3fd633b
Author: Jean-Marie Renouard jmrenouard@gmail.com
Date: Fri Dec 1 00:46:15 2023 +0100
Generate 2.5.0 minor version at 2023-12-01T00:45:45+01:00
commit 77699b7
Author: Jean-Marie Renouard jmrenouard@gmail.com
Date: Fri Dec 1 00:45:34 2023 +0100
Suggest incrementing log_buffer_size to improve InnoDB Write Log efficiency.
#462
commit c20bcbf
Merge: b10cdb7 01a1e53
Author: Jean-Marie Renouard jmrenouard@gmail.com
Date: Thu Nov 30 21:51:53 2023 +0100
Merge pull request #744 from paskal/remove_innodb_stats_on_metadata
Remove innodb_stats_on_metadata mentions in Readme
commit 01a1e53
Author: Dmitry Verkhoturov paskal.07@gmail.com
Date: Thu Nov 30 15:59:51 2023 +0100
remove innodb_stats_on_metadata mentions in Readme
That flag is off by default, starting with MySQL 5.7, and the tool
itself reports it in the "Performance Metrics" section.