MySQL 路由器 9.0  /  一般信息  /  应用程序注意事项

1.4 应用程序注意事项

MySQL 路由器的使用不需要特定的库或接口。除了管理 MySQL 路由器实例外,编写应用程序时,可以将 MySQL 路由器视为典型的 MySQL 实例。

使用 MySQL 路由器时,唯一的区别是如何连接到 MySQL 服务器。必须更新在启动时使用单个 MySQL 连接且不测试连接错误的应用程序。这是因为 MySQL 路由器在尝试连接时重定向连接,并且不读取数据包或执行分析。如果 MySQL 服务器发生故障,路由器会将连接错误返回给应用程序。

出于这些原因,应该编写应用程序来测试连接错误,并在遇到错误时重试连接。如果您的应用程序中采用了这种技术或类似的技术,那么使用 MySQL 路由器将不需要任何额外的努力。

以下内容可以让您更好地理解为什么要使用 MySQL 路由器,并从应用程序的角度介绍如何使用它。

场景

MySQL 路由器有几种可能的场景,包括

  • 作为开发人员,我希望我的应用程序连接到一个服务,以便它默认情况下获得到组复制集群的当前主节点的连接。

  • 作为管理员,我希望设置多个服务,以便 MySQL 路由器为每个高可用副本集侦听不同的端口。

  • 作为管理员,我希望能够在端口 3306 上运行连接路由服务,以便对用户或应用程序更加透明。

  • 作为管理员,我希望为每个连接路由服务配置路由策略,以便我可以指定返回主节点还是辅助节点。

使用 MySQL 路由器的工作流程

使用 MySQL 路由器的工作流程如下

  1. MySQL 客户端或连接器连接到 MySQL 路由器,例如端口 6446。

  2. 路由器检查可用的 MySQL 服务器。

  3. 路由器打开到合适的 MySQL 服务器的连接。

  4. 路由器在应用程序和 MySQL 服务器之间来回转发数据包

  5. 如果连接的 MySQL 服务器发生故障,路由器将断开应用程序的连接。然后,应用程序可以重试连接到路由器,然后路由器会选择另一个可用的 MySQL 服务器。

使用 MySQL 路由器进行连接

应用程序连接到 MySQL 路由器,路由器将应用程序连接到可用的 MySQL 服务器。

此示例演示了连接如何透明地连接到其中一个 InnoDB 集群实例。因为此示例使用沙盒化的 InnoDB 集群,其中所有实例都在同一台主机上运行,所以我们检查 port 状态变量以查看连接的是哪个 MySQL 实例。

例如,使用 MySQL 客户端连接到 MySQL 路由器

$> mysql -u root -h 127.0.0.1 -P 6446 -p

这些端口号取决于您的配置,但请比较本例中的端口

mysql> select @@port;
+--------+
| @@port |
+--------+
|   3310 |
+--------+
1 row in set (0.00 sec)

总而言之,客户端(应用程序)连接到端口 6446,但连接到端口 3310 上的 MySQL 实例。

建议

以下是使用 MySQL 路由器的一些建议。

  • 在与应用程序相同的主机上安装并运行 MySQL 路由器。有关原因列表,请参阅第三章,*部署 MySQL 路由器*

  • 在配置文件中使用 bind_port = 127.0.0.1:<port> 将路由器绑定到 localhost。或者,在 Linux 上,禁用 TCP 连接(请参阅--conf-skip-tcp),并将其限制为仅使用 Unix 套接字连接(请参阅--conf-use-sockets)。