mysqlrouter概述

MySQL路由器概述MySQL路由器在高可用性(HA)解决方案中发挥着重要作用,通过智能路由到MySQL服务器的连接来简化应用程序开发并提高性能和可靠性。
在MySQLRouter8版本中,它取代了之前的2.x系列版本,建议用户升级以获得更多高级功能并提高稳定性。
对于使用Router2.0或2.1的用户,建议切换到MySQLRouter8以获取最新功能。
MySQLRouter是InnoDBCluster的一部分,充当轻量级中间件,为多个用例提供应用程序和后端MySQL服务器之间的透明路由,例如通过将数据库流量路由到适当的MySQL服务器来提供高可用性和可扩展性。
可插拔架构允许开发人员扩展自定义用例的路由功能。
有关路由器如何成为InnoDBCluster一部分的详细信息,请参阅使用MySQLAdminAPI。
对于要处理故障转移的客户端应用程序,需要了解InnoDB集群拓扑并了解主MySQL实例。
MySQLRouter通过提供和处理这些功能来简化应用程序的实现。
MySQL使用GroupReplication在多个服务器之间复制数据库,并在服务器发生故障时执行自动故障转移。
当与InnoDBCluster一起使用时,MySQLRouter充当代理,隐藏网络上的多个MySQL实例,并将数据请求映射到集群实例之一。
只要在线有足够的副本并且组件之间的通信正确,应用程序就可以联系其中之一。
这是通过让应用程序连接到MySQLRouter而不是直接连接到MySQL来实现的。
使用MySQLInnoDBCluster时推荐的Router部署模型是集群和Router在同一主机上。
配置集群后,部署步骤如下:安装MySQL路由、引导InnoDB集群并测试。
在启动过程中,路由器连接到集群以获取元数据并配置自身以供使用。
此过程是可选的。
然后设置MySQLRouter自动启动,配置系统在主机重启时自动启动MySQL路由,类似于MySQL服务器自动启动。
MySQL路由器位于应用程序和MySQL服务器之间。
应用程序正常连接到路由器,就像连接到常规MySQL服务器一样。
每当应用程序连接到路由器时,路由器都会从候选池中选择合适的MySQL服务器并连接到它。
从那时起,路由器转发应用程序和MySQL之间的所有网络流量,包括从其返回的响应(这里流量可能成为瓶颈)。
MySQLRouter存储在线MySQL服务器或配置的InnoDB集群拓扑和状态的缓存列表。
最初,当路由器启动时,该列表是从路由器的配置文件加载的。
该列表是在使用--bootstrap选项启动路由器时使用InnoDB集群服务器生成的。
为了使缓存保持最新,元数据缓存组件维护与包含元数据的InnoDB集群服务器之一的开放连接。
它是通过从MySQL的performance_schema查询元数据数据库和实时状态信息来实现的。
当InnoDB集群发生修改时,比如使用MySQLShell添加或删除MySQL服务器,或者检测到集群状态的变化,InnoDB集群中的GroupReplication插件会更新表实时性能模式。
例如,如果MySQL服务器意外关闭。
当路由器检测到所连接的MySQL服务器宕机时,如果元数据缓存丢失,无法重新连接,它会尝试连接到不同的MySQL服务器,从新服务器获取InnoDB集群的元数据和状态。
MySQL路由器通过将MySQL连接重定向到可用的MySQL服务器来执行连接路由。
MySQL数据包未经检查就完好无损地通过。
有关使用基本连接路由的使用示例,请参阅第3.3节“基本连接路由”。
应用程序连接到MySQLRouter,而不是直接连接到MySQL服务器,如果连接失败,应用程序将重试连接,因为Router在尝试失败后会选择新的MySQL服务器。
这也称为简单重定向连接路由,需要应用程序重试连接。
如果从MySQLRouter到MySQLServer的连接中断,应用程序将遇到连接失败。
然而,新的连接尝试会触发路由查找并连接到另一个MySQL服务器。
路由服务器和路由策略都在配置文件中。
在文件中定义。
例如,以下部分告诉MySQL路由器侦听本地主机上端口7002上的连接,然后将这些连接重定向到目标选项定义的MySQL实例,包括在本地主机上运行的服务器侦听端口3306、3307和3308。
还可以使用选项routing_strategy来使用循环形式的负载平衡。
有关更多信息,请参见第4.3节“配置选项”。
使用MySQLRouter不需要特殊的库或接口。
除了管理MySQL路由实例之外,在编写应用程序时,您应该将MySQLRouter视为典型的MySQL实例。
唯一的区别是如何连接到MySQL服务器。
必须更新在启动时使用单个MySQL连接且不测试连接错误的应用程序。
MySQL路由器会在尝试连接时重定向连接,并且不会读取数据包或执行分析。
如果MySQL服务器出现故障,路由器将向应用程序返回连接错误。
因此,应编写应用程序来测试连接错误,并在发现错误时重试连接。
如果您在应用程序中使用此技术或类似技术,则使用MySQLRouter不需要额外的工作。
MySQL路由器有多种可能的场景,包括MySQL主机工作流程:MySQL客户端或连接器连接到MySQL路由器,例如可用MySQL服务器的路径检查。
该路径打开与相应MySQL服务器的连接。
路由器在应用程序和MySQL服务器之间来回转发数据包。
如果连接的MySQL服务器发生故障,路由器会断开应用程序的连接。
然后应用程序可以重试连接到路由器,路由器会选择另一个可用的MySQL服务器。
MySQLRouter连接:应用程序连接到MySQLRouter,MySQLRouter将应用程序连接到可用的MySQL服务器。
此示例显示了与InnoDB集群实例之一的透明连接。
由于此示例使用沙盒InnoDB集群,其中所有实例都在同一主机上运行,​​因此请检查端口状态变量以查看连接了哪些MySQL实例。
使用MySQL客户端连接MySQL路由器,例如:shell>mysql-uroot-h127.0.0.1-P6446-p。
该端口号取决于配置,但在示例中比较端口:mysql>select@@port;+--------+|@@port|+--------+|3310|+--------+1行在0.00秒内设置。
以下是使用MySQLRouter的建议:MySQLRouter中的新功能8.0包括MySQLConnector和其他MySQL客户端工具和应用程序,现在将其版本号的第一位数字与支持的(最高)MySQL服务器版本同步。
此更改使您可以轻松直观地决定将哪个客户端版本用于服务器版本。
同样,MySQLRouter现在使用与MySQLServer相同的版本号。
包括新功能和变化。

干货!MySqlDAL中间件总结

在数据库管理领域,MySQLDAL中间件应用已经成为提高数据库性能和效率的关键技术。
这里总结一下MySQLDAL中间件,包括Atlas、MySQLRouter、Mycat、Cobar、Amoeba、MySQLProxy等。
1.**简介**MySQL是互联网公司常用的数据库,它的性能优化需求催生了各种中间件来解决高并发、读写分离、负载均衡等问题。
本文主要关注MySQL访问中间件(DAL)实现。
2.**Atlas**Atlas是360公司开发的一个基于MySQL协议的数据中间层项目,它在MySQL正式版上做了很多优化和功能改进。
它在内部应用广泛,支持大规模业务,每天处理数亿个请求,已成为许多公司生产环境的重要组成部分。
3.**MySQLRouter**MySQLRouter是MySQL官方推出的一款轻量级代理程序。
用于在应用程序和数据库之间转发查询,实现读写分离等功能。
它是MySQL-Proxy的替代方案。
4.**Mycat**Mycat基于Cobar开发,经过重构和优化,具有高性能和高可用性,支持数据库集群管理、自动扩展和智能优化,成为广泛使用的中间件解决方案。
5.**Cobar**Cobar作为提供数据库分布式服务的中间件,实现了传统数据库的线性扩展,适合高并发场景,但是MyCat后期存在一些问题和限制。
自2013年起,Cobar已停止更新。
6.**Amoeba**Amoeba项目致力于MySQL分布式数据库的前端代理层的开发,提供负载均衡、高可用、SQL过滤等功能,但目前已经停止维护。
7.**MySQLProxy**MySQLProxy充当连接池,用于将应用程序请求转发到数据库,支持负载均衡、读写隔离等功能。
自从MySQLRouter出现后,MySQLProxy就停止维护了。
8.**客户端分片**在客户端直接对数据库和表进行分片,简化了中间件的使用,提高了性能,但灵活性有限。
9.**后记**在生产环境中,推荐使用Atlas和Mycat作为中间件,客户端分片在某些场景下也有优势。
MySQLRouter和其他一些中间件在更新中陷入困境,因此建议谨慎使用它们或寻找替代方案。

MaxScale:实现MySQL读写分离与负载均衡的中间件利器

MaxScale是MySQL的姊妹公司MariaDB开发的一个中间件工具。
旨在实现MySQL的读写分离和负载均衡。
MaxScale的插件结构允许用户根据自己的需求开发特定的插件。
MaxScale提供五种插件功能,包括但不限于监控、路由、读写分离等。
配置MaxScale涉及几个步骤,包括配置集群环境、下载安装MaxScale、添加数据库信息、启动MaxScale、客户端连接和测试。
在配置阶段,首先要在主服务器上创建监控和路由用户,然后更改配置文件中的服务器、用户、密码等信息。
此外,您还必须配置日志记录级别以跟踪MaxScale的路由日志。
启动MaxScale后,您可以使用命令检查连接状态并使用MaxScaleManager进行测试。
当辅助服务器发生故障时,MaxScale将自动识别并取消故障服务器的路由,直到故障恢复。
MaxScale识别稳定主服务器的规则可以通过配置文件设置。
当所有从服务器都出现故障时,MaxScale将无法识别主服务器,从而导致整个数据库服务失败。
通过简单的配置调整,MaxScale可以在所有从服务器故障时只支持主服务器的请求,从而保证数据库服务的可用性。
MaxScale通过实现读写分离和负载均衡来提高MySQL集群的性能和稳定性。
MaxScale可以在从服务器部分或全部故障的情况下保证数据库服务的连续性。
通过MaxScale的配置和调优,用户可以根据实际需求优化MySQL集群的性能和可用性。