MySQL Connectors and other MySQL client tools and applications now synchronize the first digit of their version number with the (highest) MySQL server version they support. This change makes it easy and intuitive to decide which client version to use for which server version. MySQL Router now uses the same version number as MySQL Server.
MySQL Router 8.0.3 is the first release to use the new numbering. It was branched from MySQL Router 2.1.4.
The quorum calculation was adjusted to take into account the RECOVERING node status. In other words, the calculation was changed from have_quorum = (online_nodes > all_nodes/2) to have_quorum = (online_nodes + recovering_nodes > all_nodes/2). For routing purposes, RECOVERING is still seen as UNREACHABLE.
TERM and INT signal handlers were added.
Graceful shutdown and restart support was improved. For example, if Router is being run from the console then Control + C will cleanly stop Router and its loaded plugins. Likewise, killing the process with SIGINT or SIGTERM (Linux) or stopping the service (Windows) will also gracefully shut down Router. The router also shuts down cleanly when shutdown is induced by an error.
Some errors were not logged if MySQL Router exited unexpectedly early (before it could open its log file), and these errors were sent to stderr instead of the logging mechanism defined by Router's configuration file. As a consequence (especially on Windows), this made it difficult to diagnose the problem that caused Router's failure to run. These errors included failure to start because the PID file already exists, failure to write the PID file, if no Router plugins were configured, if metadata_cache was defined twice, and if a configured user did not exist.
A new mysqlrouter_plugin_info utility was added to help debug MySQL Router plugins. It provides information such as the plugin version, description, ABI version, requirements, and function pointers.
On some Linux variants (such as Ubuntu), the Router installation would set the owner as mysqlrouter:adm instead of mysqlrouter:mysqlrouter for generated directories. (Bug #26530142)
[logger]section in the configuration file was invalid because the logging mechanism is not a plugin as of Router 2.1.
[logger]was used in MySQL Router 2.0, but now logging definitions are defined under the
[DEFAULT]section. To provide backward compatibility,
[logger]section support was added. (Bug #26441587)
On Windows, if a plugin failed to load, Router would exit without unloading the plugin. (Bug #26434831)
Removed the MySQL Connector specific "MySQL FOSS License Exception" from the README file. (Bug #26361093)
To fall in line with other MySQL binaries, -? is now used instead of -h as a short form for the
--helpoption. (Bug #25813290)
To fall in line with other MySQL binaries, -V is now used instead of -v as a short form for the
--versionoption. (Bug #25813190)
Router would not exit after failing to bind to a port despite posting "Bind Address can not be part of destinations" to the error log. (Bug #23501906, Bug #81643)