MySQL Router now reuses SSL connections to the metadata server when reconnecting for metadata updates. (Bug #35057590)
Multiple performance improvements were made in connection management, memory management, and statement processing. (Bug #34964415, Bug #34863113, Bug #34921527, Bug #34977233, Bug #35006489, Bug #35011055, Bug #35019415)
Under certain circumstances, if an
ENOENTsystem error was returned while MySQL Router was establishing connections to a routing destination, the accepting port was closed for that routing destination, and MySQL Router stopped accepting connections on that port. An error similar to the following was displayed:
routing ERROR [...] no backend available to connect to routing INFO [...] Stop accepting connections for routing routing:bootstrap_rw listening on 6446
As of this release, the port is not closed and additional logging is added for such errors. (Bug #35157953)
It was not possible to connect to MySQL Router with PHP and an account with an empty password. Authentication failed with the following error:
AUTH_RESPONSE packet 1 bytes shorter than expected.
Under certain circumstances, if connection sharing was enabled and the establishment of a new connection failed, the resulting server connection was left in an invalid state; the socket was closed, but the connection was kept alive.
As a result, multiple TLS connection alerts were logged. (Bug #35072554)
Passwords longer than 20 characters failed authentication through MySQL Router if the client connection was not encrypted and requested the server key. (Bug #35028666)
It was not possible to connect with pymysql. An error similar to the following was returned:
pymysql.err.OperationalError: caching sha2: Unknown packet for public key: b'-'
The server logs recorded
Aborted connectionif a pooled connection was idle for longer than the value of
idle_timeoutand was closed. (Bug #34983883)
MySQL Router did not correctly handle requests for compression over unencrypted connections, by clients such as PHP+PDO and pymysql, for example. An error similar to the following was returned:
Packets out of order. Expected 1 received 5. Packet size=26 in pdo-compressed.php on line 3
As of this release, MySQL Router returns an appropriate error stating that compression is not supported. (Bug #34960959)
Under certain circumstances, on Mac OS, Cluster endpoints were not removed from quarantine, even if they were valid and it was possible to connect to them. (Bug #34909071)
Under certain circumstances, MySQL Router did not close gracefully on Solaris, but crashed while closing. (Bug #34904367)
MySQL Router did not immediately detect connections to unresponsive ports on Mac OS. As a result, the connection reported a timeout instead of a failed connection. (Bug #34861635)
MySQL Router queried the metadata from the first server listed regardless of the role of that server. As a result, MySQL Router could retrieve metadata from a current secondary, which had been a primary, instead of the current primary. As of this release, MySQL Router takes the metadata server's current role into account.
This fix also correct an issue where MySQL Router did not discard configuration metadata relating to offline cluster members. (Bug #34835509, Bug #34857112)
If an X Protocol client or connector closed a connection, MySQL Router did not respond as expected. As a result, if the client waited for a response, the connection could remain open and unusable.
It was not possible to connect to the server through MySQL Router using older PHP clients if the MySQL account used
caching_sha2_passwordand MySQL Router was configured to use
PREFERRED/AS_CLIENToptions. (Bug #110161, Bug #35112431)
Renaming a cluster, using
cluster.setOption(), caused routing to fail due to an issue with MySQL Router configuration. This issue was caused by MySQL Router using the cluster name written to the MySQL Router configuration file during bootstrapping. The cluster name was then used in queries to the metadata cache, which failed when the cluster was renamed.
As of this release, the cluster name is not used, the UUID is used instead. That is, Group Replication UUID for group replication clusters, ClusterSet UUID for ClusterSets, and Cluster UUID for ReplicaSet clusters. The UUID is written to MySQL Router's JSON state file.Note
For backward compatibility, the cluster name is still written to the configuration file and will be used if UUIDs are not available.
(Bug #95010, Bug #29642686)