共计 1526 个字符,预计需要花费 4 分钟才能阅读完成。
本篇内容主要讲解“mysql router 是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让丸趣 TV 小编来带大家学习“mysql router 是什么”吧!
什么是 MySQL Router?
MySQL Router 是一个介于应用层和 DB 层之间的开源的轻量级中间件,它能够将前端应用的请求分析转发给后端 DB 服务器处理,从而实现 DB 的负载均衡,可以说它是先前 MySQL Proxy 的替代品,我们可以在 Github 找到它的源码。类似的工具有 360 的 Atlas、美团点评的 DBProxy、MyCat 等几种。
MySQL Router 架构
使用这种架构,前端应用不用直接连接 DB Server,而仅仅是连接到 MySQL Router,能够很方便地实现数据库集群的扩展,接下来我们再来看看它的一些其他的主要功能。
MySQL Router 主要功能
1、自动故障转移
使用 MySQL Router 实现来读写分离,前端应用层不需要直连接底层 DB,而是统一连接到 MySQL Router。MySQL Router 对前端应用层是透明的,我们不需要在代码层做任何处理。应用层会把 MySQL Router 一个正常的 MySQL 实例使用,底层 DB Master 挂了会自动使用 Backup 节点替代,十分方便。
2、DB 负载均衡
MySQL 中间件通过类似连接池的方式,将请求按照一定的规则分发给底层数据库,从而实现 DB 的读写分离、高可用。
MySQL Router 用于取代 MySQL Proxy,建议 MySQL Router 与应用程序部署在一台机器。应用程序像访问 MySQL 一样访问 MySQL Proxy,由 MySQL Proxy 将数据转发给后端的 MySQL。支持各种操作系统。
MySQL Router 的工作模式
read-write
用于多主服务器,个人感觉也可用于主备,用于多主可以避免脑裂问题,但实际上多主只有一个为 Active 状态。并且 MySQL 的主从和多主复制恢复起来都比较麻烦,需要手工操作。相比之下 MySQL Group Replication 提供了更简单的集群自动维护方案。
所有请求被发送到第一个服务器,只在第一个服务器宕机后才会使用后续的第二个服务器。
不支持宕机服务器恢复检测
以下两种情况下将无法使用
从先宕机,然后恢复,主再宕机
主先宕机,然后恢复,从再宕机
[routing:example_strategy]
bind_port = 7001
destinations = master1.example.com,master2.example.com,master3.example.com
mode = read-writ
read-only
用于路由从服务器集群。
每个请求用轮询方式访问所有服务器。如果一个服务器宕机,会尝试使用下一个服务器。如果所有服务器宕机,路由将退出。重新可用的服务器会被按照原来的顺序重新加入到可用列表
[routing:ro_route]
bind_port = 7002
destinations = slave1.example.com,slave2.example.com,slave3.example.com
mode = read-only
启动
mysqlrouter –config=/path/to/file/my_router.ini
需要将数据库连接池的 maxStatements= 0 设置为 0,否则当主机宕机后,连接池将无法在备机上找到对应的 Statement 而报错。
性能
远高于 MySQL Proxy,相比较于直连 MySQL 性能损失很小。
到此,相信大家对“mysql router 是什么”有了更深的了解,不妨来实际操作一番吧!这里是丸趣 TV 网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!