MySQL Router是一款数据库轻量中间件,提供了应用程序与后端数据库的透明路由,是mysql用来实现负载均衡和高可用功能,拥有高可用和扩展性的功能。
功能介绍
MySQL Router 是集群路由器的一部分,是轻量级的中间件,提供透明的应用程序和后端MySQL服务器之间的路由。它可以用于各种各样的用例,例如通过高效地将数据库通信路由到适当的后端MySQL服务器,从而提供高可用性和可伸缩性。可插入的体系结构还允许开发人员扩展MySQL路由器来定制用例。更多细节关于MySQL InnoDB集群路由器的一部分
故障转移
通常,一个高度可用的MySQL设置由一个主主机和多个奴隶组成,这取决于应用程序处理故障转移,以防MySQL主机变得不可用。使用MySQL路由器,应用程序连接将透明地基于负载平衡策略路由,而不实现自定义应用程序代码。
负载平衡
MySQL Router 通过在一个服务器池中分配数据库连接,提供了额外的可伸缩性和性能。例如,如果您有一组复制的MySQL服务器,MySQL路由器可以以循环的方式将应用程序连接分发给它们。
插件式体系结构
MySQL Router 的可插入体系结构允许MySQL开发人员轻松地扩展产品的附加功能,并提供MySQL用户创建自己定制插件的能力,提供了无限的可能性。MySQL路由器目前有许多核心插件,包括:
连接路由插件,它基于连接的路由,这意味着它将MySQL数据包转发给后端服务器而不检查或修改它们,从而提供最大吞吐量。
元数据缓存插件,它提供了透明的客户端负载均衡、路由、和故障转移到群复制和InnoDB集群。
软件特色
上手快,很容易配置
较为稳定,性能中没有遇到什么问题
插件式的架构允许用户进行额外功能的扩展
缺点:
仅支持简单的负载均衡功能
高可用功能有待进一步测试
虽然支持Fabric元数据,但是不支持分库分表(不得不说是一个遗憾)
白名单,SQL统计功能,防火墙功能缺失
需要gcc 4.8以上版本支持,老系统编译比较麻烦些
配置文件
[DEFAULT]
logging_folder = /var/log/mysqlrouter
[logger]
level = INFO
[routing:failover]
bind_address = 10.166.224.50
bind_port = 7001
max_connections = 1024
mode = read-write
destinations = 10.166.224.33:3310,10.166.224.34:3310
[routing:balancing]
bind_address = 10.166.224.50
bind_port = 7002
connect_timeout = 3
max_connections = 1024
mode = read-only
destinations = 10.166.224.33:3310,10.166.224.34:3310
通过该配置文件启动MySQL Router会监听两个端口10.166.224.50:7001和10.166.224.50:7002。10.166.224.50:7001是一个高可用的端口(mode=read-write),通过7001的端口访问MySQL Router中间件会首先将请求发送到服务器10.166.224.33:3310,如果确定该服务器宕机,则会发送到服务器10.166.224.34:3310。10.166.224.50:7002是一个负载均衡的端口,每个都请求可以将通过roundrobin的方式发送到destiantions对应的MySQL服务器。通过MySQL Router用户可以快速实现一个简单的带有读写分离的高可用集群。MySQL Router甚至可以链接MySQL Fabric的元数据库,具体可查看MySQL Router的相关文档。