MySQL Router Release Notes  /  Changes in MySQL Router 8.2.0 (2023-10-25, Innovation Release)

Changes in MySQL Router 8.2.0 (2023-10-25, Innovation Release)

Deprecation and Removal Notes

  • The allow_primary_reads parameter of the destinations URI is now deprecated and subject to removal in a future version of MySQL Router. Use the PRIMARY_AND_SECONDARY parameter instead. For example:

    [routing:example]
    destinations=metadata-cache://cache-name/default?role=PRIMARY_AND_SECONDARY

    (WL #15871)

  • Metadata Schema v1.x support is now deprecated and subject to removal in a future version of MySQL Router. Connecting to a Cluster which uses this version now triggers a warning stating that the metadata version is deprecated and the Cluster metadata should be upgraded. (WL #15876)

Functionality Added or Changed

  • MySQL Router now recognizes accounts with empty password sent from PHP over the classic MySQL protocol. (Bug #35463338)

  • MySQL Router can be configured to route traffic to a partition of a Cluster which does not have quorum. This option is configured in the Cluster metadata, using the unreachable_quorum_allowed_traffic option of cluster.setRoutingOption() in MySQL Shell's AdminAPI.

    See Routing Options. (WL #15841)

  • MySQL Router supports Read-Write splitting. This configuration enables you to direct all read traffic to read-only instances, and all write traffic to read/write instances.

    The following router configuration options are added:

    Read-Write splitting is enabled by default. A new section, [router:read_write_split], is added automatically to the bootstrap configuration. To disable this configuration, you must bootstrap with --disable-rw-split.

    See Read/Write Splitting. (WL #12794)

Bugs Fixed

  • Queries larger than 16MB were not properly handled if Connection Sharing was enabled. (Bug #35769702)

  • Unclosed comments, /* without a corresponding closing /*, caused MySQL Router to close unexpectedly if Connection Sharing was enabled. (Bug #35769610)

  • Authentication failed for third-party clients using non-SSL connections, with caching-sha2-password and the following SSL options configured:

    • client_ssl_mode set to PREFERRED or PASSTHROUGH

    • server_ssl_mode=AS_CLIENT

    An error similar to the following was returned:

            Couldn't read RSA public key from server

    (Bug #35737521)

  • MySQL Router closed unexpectedly when attempting to connect to a ClusterSet but only had access to members without quorum. (Bug #35705590)

  • If the directory used for bootstrapping contained a symlink, the keyring's master key could not be located. An error similar to the following was returned:

      Error: Master key for keyring at '/bootstrapPath/data/keyring' 
      could not be read

    (Bug #35630329)

  • Under certain circumstances, MySQL Router did not shutdown when closed with SIGTERM or SIGINT. It was possible for a connection to be in an intermediate state and block the shutdown until that remaining connection was closed by the user. (Bug #35574557)

  • If an invalid client greeting was received, the following message was logged:

            loop(): Input too short

    This message was not helpful to the user. As of this release, an error message is returned to the client and no error message is logged if the packet is invalid. (Bug #35523018)

  • MySQL Router maintained the router-server connection until the transaction was complete, even when the client-router connection had closed. This could result in a max-connection error.

    As of this release, MySQL Router checks the client-router connection status while waiting for the transaction response. (Bug #35515899)

  • Routing on named sockets did not resume after Cluster recovery. Error 2002 was logged. (Bug #35503286)

  • MySQL Router error log did not contain MySQL Router version information. (Bug #35503191)

  • Server-side TLS session were not reused after multiple consecutive authentication failures due to invalid authentication data. (Bug #35499025)

  • It was not possible to connect to MySQL Router with PHP and an account with an empty password using a command similar to the following:

    php -r 'mysqli_real_connect(mysqli_init(), "127.0.0.1", "empty", "");'

    Authentication failed with the following error:

    PHP Warning:  mysqli_real_connect(): Premature end of data
    (mysqlnd_wireprotocol.c:703) in Command line code on line 1
    PHP Warning:  mysqli_real_connect(): AUTH_RESPONSE packet 1 bytes
    shorter than expected in Command line code on line 1

    (Bug #35493871)

  • Connection sharing was not possible for clients which do not support session trackers, such as PHP's mysqlnd or Python's pymysql. (Bug #35468897)

  • Connection sharing was disabled if a change-user operation occurred over a plaintext connection. (Bug #35467047)

  • If a client aborted a TLS handshake due to a certificate which cannot be verified, the following was incorrectly logged as an ERROR by MySQL Router:

       ERROR ... classic::loop() processor failed:
       error:0A000418:SSL routines::tlsv1 alert unknown ca
       (tls_err:167773208)

    As of this release, the connection is closed without a processor failed error and an INFO message is logged explaining why the TLS handshake failed. (Bug #35443773)

  • MySQL Router logs did not contain the correct information for classic MySQL protocol connections. For TCP/IP, the address information was missing, while UNIX socket connections were missing the amount of data transferred. (Bug #35431001)

  • MySQL Router did not reject ambiguous port configuration. For example, if both bind_address and bind_port were specified with different port numbers. (Bug #34972789)

  • MySQL Router disconnected all connections to a Cluster if the user added a new instance to an existing Cluster with only one remaining member. This occurred because the new instance was present in the Group Replication metadata but not yet in the Cluster's metadata. MySQL Router assumed there was no quorum and disconnected. It was possible to reconnect after the new instance was represented in the Cluster's metadata.

    As of this release, MySQL Router relies only on the Group Replication metadata for quorum reporting. (Bug #33989165)

  • Under certain circumstances, on Microsoft Windows platforms, it was not possible to run MySQL Router as a service. An error message stating the MySQL Router configuration file could not be found was logged even though the configuration file was present and correct. (Bug #33301070)