MySQL 连接器和其他 MySQL 客户端工具和应用程序现在将其版本号的第一位数字与其支持的(最高)MySQL 服务器版本同步。此更改使得决定将哪个客户端版本用于哪个服务器版本变得简单直观。MySQL Router 现在使用与 MySQL Server 相同的版本号。
MySQL Router 8.0.3 是第一个使用新编号的版本。它是从 MySQL Router 2.1.4 分支出来的。
调整法定人数计算以考虑正在恢复的节点状态。换句话说,计算从 have_quorum = (online_nodes > all_nodes/2) 更改为 have_quorum = (online_nodes + recovering_nodes > all_nodes/2)。出于路由目的,RECOVERING 仍被视为 UNREACHABLE。
添加了 TERM 和 INT 信号处理程序。
优雅关机和重启支持得到改善。例如,如果 Router 正在从控制台运行,那么 Control + C将干净地停止 Router 及其加载的插件。同样,使用 SIGINT 或 SIGTERM (Linux) 终止进程或停止服务 (Windows) 也将正常关闭 Router。当错误导致关闭时,路由器也会干净地关闭。
如果 MySQL Router 意外提前退出(在它可以打开其日志文件之前),则不会记录一些错误,并且这些错误将发送到stderr而不是 Router 的配置文件定义的日志记录机制。结果(特别是在 Windows 上),这使得诊断导致路由器运行失败的问题变得困难。这些错误包括启动失败,因为 PID 文件已经存在,无法写入 PID 文件,如果没有配置 Router 插件,如果metadata_cache被定义了两次,以及如果配置的用户不存在。
添加了一个新的mysqlrouter_plugin_info实用程序以帮助调试 MySQL 路由器插件。它提供插件版本、描述、ABI 版本、要求和函数指针等信息。
在某些 Linux 变体(例如 Ubuntu)上,路由器安装会将生成目录的所有者设置为mysqlrouter:adm 而不是mysqlrouter:mysqlrouter。(漏洞 #26530142)
在配置文件中定义一个
[logger]
部分是无效的,因为记录机制不是路由器 2.1 的插件。[logger]
在 MySQL Router 2.0 中使用,但现在日志记录定义在[DEFAULT]
部分下定义。为了提供向后兼容性,[logger]
添加了部分支持。(漏洞#26441587)在 Windows 上,如果插件加载失败,路由器将退出而不卸载插件。(漏洞 #26434831)
从 README 文件中删除了 MySQL Connector 特定的“MySQL FOSS License Exception”。(漏洞 #26361093)
为了与其他 MySQL 二进制文件保持一致, -? 现在使用而不是 -h作为该
--help
选项的缩写形式。(漏洞 #25813290)为了与其他 MySQL 二进制文件保持一致, 现在使用 -V代替-v作为该
--version
选项的缩写形式。(漏洞 #25813190)尽管在错误日志中显示“绑定地址不能成为目的地的一部分”,但路由器在绑定到端口失败后不会退出。(漏洞 #23501906,漏洞 #81643)