|
| 1 | +# Percona Server for MySQL 8.0.44-35 (11-24-2025) |
| 2 | + |
| 3 | +Get started with [Quickstart Guide for Percona Server for MySQL](../quickstart-overview.md). |
| 4 | + |
| 5 | +[Percona Server for MySQL 8.0.44-35](https://www.percona.com/mysql/software) includes all the features and bug fixes available in the [MySQL 8.0.44 Community Edition](https://dev.mysql.com/doc/relnotes/mysql/8.0/en/news-8-0-44.html) and enterprise-grade features developed by Percona. |
| 6 | + |
| 7 | +## Release highlights |
| 8 | + |
| 9 | +### MySQL 8.0.44 |
| 10 | + |
| 11 | +Improvements and bug fixes provided by Oracle for MySQL 8.0.44 and included in Percona Server for MySQL are the following: |
| 12 | + |
| 13 | +* Fixed an issue where parallel scan thread creation could fail, causing assertion failures when falling back to single-thread mode. (Bug #38325137) |
| 14 | + |
| 15 | +* Fixed an issue where virtual index rollback could fail on 32-bit builds of MySQL Server under certain circumstances. (Bug #38167527) |
| 16 | + |
| 17 | +* Fixed an issue where very large buffer pools could require excessive memory chunks per instance, potentially causing allocation failures. The allocation is now validated to ensure proper memory allocation. (Bug #37994397) |
| 18 | + |
| 19 | +* Fixed an issue where assertion failures could occur due to data size and bounds mismatches during DDL file operations. (Bug #37882398) |
| 20 | + |
| 21 | +* Fixed an issue related to modifying the internal Full-Text Search (FTS) configuration. (Bug #37792010) |
| 22 | + |
| 23 | +* Fixed an issue related to virtual indexes. (Bug #37602657) |
| 24 | + |
| 25 | +* Fixed an issue where confusing warning messages could appear when row sizes exceeded maximum allowed limits with `innodb_strict_mode=OFF`, such as during table selection or column dropping operations. Error messages have been improved for clarity. (Bug #37003342, Bug #36768046, Bug #36867372) |
| 26 | + |
| 27 | + |
| 28 | +Find the complete list of bug fixes and changes in the [MySQL 8.0.44 Release Notes](https://dev.mysql.com/doc/relnotes/mysql/8.0/en/news-8-0-44.html). |
| 29 | + |
| 30 | +## Improvements |
| 31 | + |
| 32 | +* [PS-8980](https://perconadev.atlassian.net/browse/PS-8980): Percona Server for MySQL 8.0.44-35 adds the `performance_schema.account_failed_login_lock_status` table which lists the user accounts that have been temporarily locked after reaching the limit for failed login attempts. |
| 33 | + |
| 34 | +## Bug Fixes |
| 35 | + |
| 36 | +### InnoDB |
| 37 | + |
| 38 | +* [PS-9837](https://perconadev.atlassian.net/browse/PS-9837): A server exit occurs on a replica that uses `replica_parallel_workers` > 0 and `slave_preserve_commit_order`=ON when many threads repeatedly delete rows and then insert new rows having the same secondary‑index values, creating duplicate index entries. |
| 39 | +Changing the workload to a single `UPDATE` (instead of a delete‑followed‑by‑insert) prevents the duplicate‑key situation and stops the replica from exiting. |
| 40 | + |
| 41 | +* [PS-9838](https://perconadev.atlassian.net/browse/PS-9838): The server’s estimate for how many rows fit in one index leaf (`guess_rec_per_key()`) uses two numbers: `used_keyparts` (the parts actually stored in the index) and `user_defined_key_parts` (the parts the user declared). |
| 42 | +If these two counts differ, the formula calculates the wrong capacity, leading to inaccurate index‑size estimates. |
| 43 | + |
| 44 | +* [PS-10283](https://perconadev.atlassian.net/browse/PS-10283): A debug‑assertion failure (`field.field_no < dict_index_get_n_fields(index)`) that occurred during recovery of InnoDB tables using `ROW_FORMAT=REDUNDANT`. The fix added a conditional bypass of the index‑field validation when the server was in recovery mode and the table was non‑compact (redundant), preventing the assertion from triggering and allowing the server to start and recover normally. |
| 45 | + |
| 46 | +### MyRocks |
| 47 | + |
| 48 | +* [PS-9220](https://perconadev.atlassian.net/browse/PS-9220): During slow‑query‑log rotation the server attempts to write to the base file `slow.log` (which isn’t created), raises an error - `errno 2 – No such file or directory`, but the logs are written with numeric suffixes (for example, `slow.log.000087`) that obey the configured size and file‑count limits. |
| 49 | + |
| 50 | +* [PS-9452](https://perconadev.atlassian.net/browse/PS-9452): When the server uses a thread‑pool (thread_handling = pool‑of‑threads) and the variable `thread_pool_high_prio_mode` is set to `transactions`, every new client connection is placed in the normal‑priority queue. The queue is processed only if there is a free thread in the pool. |
| 51 | + |
| 52 | +* [PS-9680](https://perconadev.atlassian.net/browse/PS-9680): Calling `ALTER TABLE … IMPORT TABLESPACE` (or any RocksDB operation that creates a new table) from many threads at the same time can trigger the error “Invalid argument: Global seqno is required, but disabled.” |
| 53 | +Even when `rocksdb_bulk_load` is set to `0`, this error indicates that RocksDB’s global sequence‑number tracking is turned off while the engine still expects it, causing write‑order mismatches that may corrupt the data. |
| 54 | + |
| 55 | +* [PS-9834](https://perconadev.atlassian.net/browse/PS-9834): The Audit Log Filter incorrectly deletes all rotated logs if the `audit_log_filter.max_size` is set > 2 GiB. |
| 56 | + |
| 57 | +* [PS-9840](https://perconadev.atlassian.net/browse/PS-9840): An assertion was triggered because a data dictionary table existed for table T, yet that table was not registered in RocksDB. The storage engine could not locate the corresponding physical representation, leading to the failure. |
| 58 | + |
| 59 | +* [PS-9842](https://perconadev.atlassian.net/browse/PS-9842): An assertion was raised because `rocksdb::MergingIterator::CurrentForward()` asserted that `minHeap_.empty() || minHeap_.top()->type == HeapItem::Type::ITERATOR`. The fix corrected the heap‑state handling, eliminating the SIG 6 termination and stabilized table‑check operations. |
| 60 | + |
| 61 | +* [PS-10067](https://perconadev.atlassian.net/browse/PS-10067): This fix resolves malformed reads and improves the stability of index iteration. The update fixed `Rdb_convert_to_record_key_decoder::skip()` so that it now advances both the key‑slice reader and the unpack‑information reader. By consuming the per‑field metadata (item 5) during iteration with `Rdb_key_field_iterator::next()`, the function correctly handles index fields created via `make_unpack_unknown_varlength()`. |
| 62 | + |
| 63 | +* [PS-10075](https://perconadev.atlassian.net/browse/PS-10075): A checksum‑mismatch failure when executing queries with RocksDB enabled with default settings. The fix corrected the checksum validation logic and ensured that index scans correctly verified and updated record checksums, eliminating the “record checksum mismatch” and “corrupt” messages during table checks. |
| 64 | + |
| 65 | +* [PS-10131](https://perconadev.atlassian.net/browse/PS-10131): The `audit_log_rotate()` could be delayed up to one second because `FileWriterBuffering::close()` waited for a flush‑worker thread that was sleeping in `mysql_cond_timedwait`. The fix signals the flush‑worker immediately before the wait, ensuring prompt buffer flushing and preventing rotation delays. |
| 66 | + |
| 67 | +* [PS-10210](https://perconadev.atlassian.net/browse/PS-10210): Added enforcement for the ranges for the following MyRocks variables: `rocksdb_block_size` now rejects sizes larger than 4 GiB, `rocksdb_keep_log_file_num` must be greater than 0, and `rocksdb_persistent_cache_size_mb` requires a minimum of 100 MiB. Additionally, the `rocksdb_debug_cardinality_multiplier` parameter was constrained to valid ranges, eliminating the crashes that occurred when it was set to 0. |
| 68 | + |
| 69 | +* [PS-10227](https://perconadev.atlassian.net/browse/PS-10227): An unexpected server exit occurred when `rocksdb_table_stats_skip_system_cf` was enabled. Previously, enabling this option left the system column‑family pointer null during RocksDB recovery, causing an assertion failure in `Rdb_cf_manager::get_cf()` and aborting `mysqld` with signal 6. The fix introduced proper initialization and safety checks for the system column family, allowing the server to start normally while still skipping system‑CF statistics. |
| 70 | + |
| 71 | + |
| 72 | + |
| 73 | +## Build & packaging notes |
| 74 | + |
| 75 | + |
| 76 | + |
| 77 | +## Useful links |
| 78 | + |
| 79 | +Install [Percona Server for MySQL 8.0](https://docs.percona.com/percona-server/8.0/installation.html) |
| 80 | + |
| 81 | +Upgrade [Percona Server for MySQL from 5.7 to 8.0](../upgrade.md) |
| 82 | + |
| 83 | +The [Percona Server for MySQL GitHub repository](https://github.com/percona/percona-server) |
| 84 | + |
| 85 | +Download product binaries, packages, and tarballs at [Percona Product Downloads](https://www.percona.com/downloads) |
| 86 | + |
| 87 | +[Contribute to the documentation](https://github.com/percona/psmysql-docs/blob/8.0/contributing.md) |
| 88 | + |
| 89 | +For [training](https://www.percona.com/training), contact [Percona Training - Start learning now](https://learn.percona.com/contact-me) |
0 commit comments