mysql router 概述

MySQL Router 是InnoDB Cluster的一部分,作为轻量级中间件,在应用程序和后端MySQL服务器之间提供透明路由,用于多种用例,如通过路由数据库流量至适当的MySQL服务器,提供高可用性和可扩展性。其可插拔架构允许开发者为自定义用例扩展路由功能。了解Router如何成为InnoDB Cluster组成部分的详细信息,请参阅使用M...
mysql router 概述
MySQL 路由器概述

MySQL 路由器在高可用性 (HA) 解决方案中扮演关键角色,通过智能地将连接路由到 MySQL 服务器,简化应用程序开发,提高性能和可靠性。在MySQL Router 8的版本中,它取代了先前的2.x系列版本,建议用户升级以获得更先进的功能和增强的稳定性。对于使用Router 2.0 或 2.1的用户,推荐过渡至MySQL Router 8以获取最新特性。

MySQL Router 是InnoDB Cluster的一部分,作为轻量级中间件,在应用程序和后端MySQL服务器之间提供透明路由,用于多种用例,如通过路由数据库流量至适当的MySQL服务器,提供高可用性和可扩展性。其可插拔架构允许开发者为自定义用例扩展路由功能。了解Router如何成为InnoDB Cluster组成部分的详细信息,请参阅使用MySQL Admin API。

对于处理故障转移的客户端应用程序,需要了解InnoDB集群拓扑并知道哪个MySQL实例为主。MySQL Router 通过提供和处理此功能,简化了应用程序的实现。MySQL通过Group Replication在多个服务器间复制数据库,同时在服务器故障时执行自动故障转移。与InnoDB Cluster一起使用时,MySQL Router作为代理,隐藏网络上的多个MySQL实例,并将数据请求映射到集群实例之一。只要有足够的在线副本且组件间通信无误,应用程序即可联系其中之一。通过让应用程序连接至MySQL Router而非直接连接至MySQL,实现了这一点。

部署MySQL InnoDB Cluster时推荐的Router部署模型是在同一主机上的集群和Router。配置集群后,部署步骤如下:安装MySQL路由、引导InnoDB集群并进行测试。在引导过程中,Router连接至集群获取元数据,并配置自身以供使用。此过程是可选的。然后设置MySQL Router以自动启动,配置系统在主机重启时自动启动MySQL路由,类似于MySQL服务器的自动启动方式。

MySQL路由器通过位于应用程序和MySQL服务器之间工作。应用程序正常连接至路由器,就像连接至普通MySQL服务器。每当应用程序连接至Router时,Router从候选池中选择一个合适的MySQL服务器,然后连接至它。从那一刻起,路由器转发应用程序和MySQL之间的所有网络流量,包括从其返回的响应(这里流量可能成为瓶颈)。MySQL Router保存在线MySQL服务器的缓存列表或配置的InnoDB集群的拓扑和状态。最初,当路由器启动时,该列表从路由器的配置文件中加载。此列表在使用--bootstrap选项引导路由器时使用InnoDB集群服务器生成。为了保持缓存更新,元数据缓存组件保持与包含元数据的InnoDB集群服务器之一的开放连接。它通过从MySQL的performance_schema查询元数据数据库和实时状态信息实现。每当修改InnoDB集群时,如使用MySQL Shell添加或删除MySQL服务器,或检测到集群状态更改,InnoDB集群中Group Replication插件就会实时更新performance_schema表。例如,如果一台MySQL服务器意外关闭。当路由检测到连接的MySQL服务器关闭时,如元数据缓存丢失连接无法再次连接,它会尝试连接至不同的MySQL服务器以从新服务器获取元数据和InnoDB集群状态。

MySQL路由器通过将MySQL连接重定向至可用的MySQL服务器实现连接路由。MySQL数据包在未经检查的情况下进行完整的路由。使用基本连接路由的示例部署请参阅第3.3节“基本连接路由”。应用程序连接至MySQL路由器而非直接连接至MySQL服务器,如果连接失败,应用程序将重试连接,因为路由器在尝试失败后选择新的MySQL服务器。这也称为简单重定向连接路由,需要应用程序重试连接。如果从MySQL路由器至MySQL服务器的连接中断,应用程序会遇到连接失败。但是,新的连接尝试会触发路由查找并连接至另一个MySQL服务器。路由服务器和路由策略在配置文件中定义。例如,以下部分告诉MySQL路由器监听本地主机的7002端口上的连接,然后将这些连接重定向至由destinations选项定义的MySQL实例,包括本地主机上运行的服务器监听端口3306、3307和3308。我们还使用routing_strategy选项来使用负载平衡的循环形式。其他信息请参阅第4.3节“配置选项”。

MySQL路由器使用无需特定库或接口。除了管理MySQL路由实例之外,编写应用程序时,应将MySQL路由器视为一个典型的MySQL实例。唯一不同之处是如何连接至MySQL服务器。在启动时使用单一MySQL连接且不测试连接错误的应用程序必须进行更新。MySQL路由器在尝试连接时重定向连接,不读取数据包或执行分析。如果MySQL服务器出现故障,路由器将连接错误返回给应用程序。因此,应编写应用程序以测试连接错误,并在遇到时重试连接。如果在应用程序中使用了这种技术或类似技术,使用MySQL路由器将不需要额外的努力。

MySQL路由器有几种可能的方案,包括MySQL主机的工作流程:MySQL客户端或连接器连接至MySQL路由器,例如端口6446。路由检查可用的MySQL服务器。路由打开与合适的MySQL服务器的连接。路由在应用程序和MySQL服务器之间来回转发数据包。如果连接的MySQL服务器出现故障,路由断开应用程序的连接。然后应用程序可以重试连接至路由,路由选择不同的可用MySQL服务器。

MySQL路由器进行连接:应用程序连接至MySQL路由器,路由将应用程序连接至可用的MySQL服务器。此示例演示透明地连接至InnoDB集群实例之一。由于此示例使用沙盒InnoDB集群,其中所有实例均运行在同一主机上,因此检查端口状态变量以查看连接的是哪个MySQL实例。使用MySQL客户端连接至MySQL路由器,例如:shell>mysql -u root -h 127.0.0.1 -P 6446 -p。这些端口号取决于配置,但在示例中比较端口:mysql>select @@port;+--------+| @@port |+--------+| 3310 |+--------+1行在0.00秒内设置。

以下是使用MySQL路由器的建议:

MySQL Router 8.0的新特性包括MySQL连接器和其他MySQL客户端工具和应用程序现在将其版本号的第一位数字与其支持的(最高)MySQL服务器版本同步。此更改使决定使用哪个客户端版本用于哪个服务器版本变得容易且直观。同样,MySQL路由器现在使用与MySQL服务器相同的版本号。新功能和变化包括。2024-10-21
mengvlog 阅读 6 次 更新于 2025-07-20 05:13:38 我来答关注问题0
檬味博客在线解答立即免费咨询

mySQL相关话题

Copyright © 2023 WWW.MENGVLOG.COM - 檬味博客
返回顶部