MySQL Router 9.0  /  MySQL Router 常见问题

附录 A MySQL Router 常见问题

A.1. 我应该在哪里安装 MySQL Router?
A.2. 我可以运行多个路由器应用程序实例吗?
A.3. 如何使路由器应用程序实现高可用性?
A.4. 路由器会检查数据包吗?
A.5. 路由器会影响性能吗?
A.6. 请解释不同的 MySQL Router 版本,特别是为什么 Router 从 2.1.4 变为 8.0.3。
A.7. 我可以将路由器绑定到多个 IP 地址吗?
A.8. 不同的调度模式和策略之间有什么区别?
A.9. 每个 MySQL Router 实例支持多少个并发连接?
A.10. 在使用 AppArmor 的系统上,如何配置 MySQL Router 使用非默认目录?

A.1.

我应该在哪里安装 MySQL Router?

为了获得最佳性能,MySQL Router 通常安装在与其一起使用的应用程序所在的同一台主机上。这样做可以减少网络延迟,允许与应用程序建立本地 Unix 域套接字连接而不是 TCP/IP 连接,并且通常应用程序服务器最容易扩展。但是,这不是必需的,因为 Router 可以安装在任何主机上,甚至可以安装在它自己的主机上。

注意

Unix 域套接字可以与连接到 MySQL Router 的应用程序一起使用,但不能用于 MySQL Router 连接到 MySQL 服务器。

A.2.

我可以运行多个路由器应用程序实例吗?

可以,另请参阅 --directory 引导选项。

A.3.

如何使路由器应用程序实现高可用性?

将 MySQL Router 作为 InnoDB 集群的一部分使用。有关更多详细信息,请参阅 MySQL AdminAPI

A.4.

路由器会检查数据包吗?

不会。

A.5.

路由器会影响性能吗?

在通信流中引入组件会产生一定量的开销;这在很大程度上受工作负载的影响。幸运的是,对当前版本的性能测试表明,对于简单的重定向连接路由,其速度与直接连接的速度大致相同,仅慢了约 1%。

A.6.

请解释不同的 MySQL Router 版本,特别是为什么 Router 从 2.1.4 变为 8.0.3。

MySQL Router 2.0 是初始版本,适用于 MySQL Fabric 用户。它已被弃用,不再受支持。

MySQL Router 2.1 的推出是为了支持 MySQL InnoDB 集群,它还添加了引导等新功能。

MySQL Router 8.0 在 MySQL Router 2.1 的基础上进行了扩展,但版本号与 MySQL 服务器保持一致。换句话说,Router 2.1.5 作为 Router 8.0.3(以及 MySQL Server 8.0.3)发布,2.1.x 分支被 8.0.x 分支取代。这两个分支完全兼容。

A.7.

我可以将路由器绑定到多个 IP 地址吗?

不可以,配置文件中的 bind_address 选项只接受一个地址。但是,可以使用 bind_addres = 0.0.0.0 绑定到本地主机上的所有端口。

A.8.

不同的调度模式和策略之间有什么区别?

Router 8.0 引入了 routing_strategy 选项。它提供了 first-availablenext-availableround-robinround-robin-with-fallback 策略。有关更多详细信息,请参阅 routing_strategy 文档。

A.9.

每个 MySQL Router 实例支持多少个并发连接?

从 MySQL Router 8.0.22 开始,超过 50,000 个,具体取决于系统的 poll(poll 或 linux_epoll)限制,也取决于可用的 CPU 核心/线程数。

早期的 MySQL Router 版本的限制更接近 5000,具体取决于操作系统的 poll() 限制。

A.10.

在使用 AppArmor 的系统上,如何配置 MySQL Router 使用非默认目录?

如果在使用 AppArmor 的系统(例如 Ubuntu)上使用 --directory 选项,则可能会遇到与 MySQL Router 访问非默认目录相关的权限错误。在这种情况下,请按照建议将传递给 --directory 的路径添加到 AppArmor 文件中,然后重新启动 AppArmor。