MySQL Router 8.4 Release 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)
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
        
        in MySQL Shell's AdminAPI.
      cluster.setRoutingOption()
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)
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)