MySQL路由器8.0  / 第一章 一般信息  /  1.4 应用注意事项

1.4 应用注意事项

MySQL Router 的使用不需要特定的库或接口。除了管理 MySQL Router 实例之外,编写您的应用程序时,就好像 MySQL Router 是一个典型的 MySQL 实例一样。

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

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

以下内容更好地说明了您可能想要使用 MySQL Router 的原因,并从应用程序的角度研究了如何使用它。

场景

MySQL Router 有几种可能的场景,包括:

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

  • 作为管理员,我想设置多个服务,以便 MySQL Router 在不同的端口上侦听每个高可用性副本集。

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

  • 作为管理员,我想为每个连接路由服务配置一种模式,以便我可以指定是返回主要还是次要。

MySQL Router 的工作流程

MySQL Router的使用流程如下:

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

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

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

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

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

使用 MySQL 路由器的连接

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

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

使用 MySQL 客户端连接到 MySQL Router,例如:

$> 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 Router 的建议。

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

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