MySQL Blog Archive
For the latest blogs go to
MySQL Router 8.0.4-rc has been released

Dear MySQL users,

MySQL Router 8.0.4-rc is the first release candidate for MySQL Router
8.0 series.

The MySQL Router is a new building block for high availability solutions
based on MySQL InnoDB clusters.

By taking advantage of the new Group Replication technology, and
combined with the MySQL Shell, InnoDB clusters provide an integrated
solution for high availability and scalability for InnoDB based MySQL
databases, that does not require advanced MySQL expertise.

The deployment of applications with high availability requirements is
greatly simplified by MySQL Router. MySQL client connections are
transparently routed to online members of a InnoDB cluster, with MySQL
server outages and cluster reconfigurations being automatically handled
by the Router.

To download MySQL Router 8.0.4-rc, see the “Development Releases” tab at Package binaries are available
for several platforms and also as a source code download.

Documentation for MySQL Router can be found at


Changes in MySQL Router 8.0.4 (2018-02-07, Release Candidate)

   Functionality Added or Changed

     * Bootstrapping now accepts the --config option and reads
       the [logger] level option's definition. For example, to enable
       bootstrap's debugging mode:
       level = DEBUG

       (Bug #27158098)

     * The default ttl metadata option (Time To Live, in
       seconds) changed from 300 to 5. (Bug #26990955, Bug #88140)

     * The new connect_timeout and read_timeout options were
       added. These are defined under the [DEFAULT] namespace and affect
       internal operations, such as metadata server connections. (Bug

     * Bootstrap now accepts any member of an InnoDB cluster and
       automatically finds and reconnects to a writable primary.  (Bug

     * The optional routing_strategy configuration option was
       added. The available values are first-available, next-available,
       round-robin, and round-robin-with-fallback.  Previously, these
       strategies were described as scheduling modes by the mode
       configuration option where the read-write mode defaults to the
       first-available strategy, and the read-only mode defaults to the
       round-robin strategy. This preserves previous behavior for these
       modes. (Bug #86261, Bug #26045094, Bug #25852803)

   Bugs Fixed

     * With logging_folder undefined during bootstrap, all logs
       were written to STDERR. Now, normal bootstrap logs are written to
       STDOUT and debug bootstrap logs are written to STDERR. (Bug

     * Errors were changed to warnings for the following
       conditions: when Router could not connect to a particular
       metadata server, and when Router could not update the default
       metadata cache replicaset. Under these conditions, Router does
       not stop running because there are multiple metadata servers and
       replicasets. (Bug #27226627)

     * Configuring MySQL Router with sockets would create a
       socket that was only accessible by the MySQL Router user.  (Bug
       #27179456, Bug #88667)

     * The commercial .deb packages were missing the
       mysqlrouter_plugin_info tool. (Bug #27122367)

     * The apt purge process did not remove the
       /var/{lib,log,run}/mysqlrouter directories. (Bug #26955232)

     * Bootstrapping would fail when connecting to a MySQL
       Server under high load if an associated bootstrap query took
       longer than 5 seconds. The 5 second read timeout was increased
       from 5 to 30. In addition, command line options were added to
       change the connect and read timeout values.  (Bug #26877946)

     * Improved error text when bootstrapping against a MySQL
       server 8.0 instance that was not part of InnoDB cluster.  (Bug

     * Router assumed that a resulting socket from accept()ing a
       socket would be always blocking. On Solaris and Windows this
       assumption is not valid, and this resulted in broken connections
       with large result sets. (Bug #26834769)

     * It was difficult to distinguish the "Too many
       connections" between MySQL Server and MySQL Router, so the Router
       variant now reads as "Too many connections to MySQL Router". (Bug

     * The bundled README.txt was missing Protobuf and Rapid
       JSON references. (Bug #25619654)

     * Some builds were missing the sample configuration file,
       including the Solaris and Oracle Linux binaries. (Bug #25530691)

     * Router would check IPv4 or IPv6 addresses, but not both.
       Now it goes through the list of addresses and first tries to bind
       to an IPv4 address and if it fails then it goes through the same
       address list and tries to bind to an IPv6 address. (Bug

     * The generated error message from passing in an empty file
       to --master-key-file (or using an empty mysqlrouter.key) was
       improved. (Bug #25111926)

     * Defining multiple logger sections in the configuration
       file would emit an unclear error. Defining multiple logger
       sections is not allowed. (Bug #25095565)

     * Where destinations=metadata-cache, the role attribute was
       not used or validated; only the mode configuration option was
       used. (Bug #25061854)

     * Failed bootstrap commands would leave a generated
       mysqlrouter.conf.tmp file on the system. (Bug #24930442)

     * On Ubuntu Linux, documentation related files were
       installed under both /usr/share/mysql-router/docs and
       /usr/share/doc/mysql-router. Now they are only installed under
       /usr/share/doc/mysql-router for community builds and
       /usr/share/doc/mysql-router-commercial for commercial builds.
       (Bug #24765509)

     * The maximum number of concurrent client connections was
       increased from about 500 to over 5000, a limit now dependent on
       the operation system. To achieve this, select() based fd event
       calls were replaced by poll() (or WSAPoll() on Windows). (Bug
       #22661705, Bug #80260)

     * The --ssl-key and --ssl-cert optional bootstrap
       command-line options were added. They directly use their MySQL
       client's counterparts, and specify the client-side certificate
       and private key to facilitate client-side authentication. This is
       useful when the root account used during bootstrap was created
       with REQUIRE X509, which requires the client to authenticate
       itself when logging in.

On behalf of Oracle MySQL Release Team
Nawaz Nazeer Ahamed