MySQL Router 8.0 安装及说明

412 total views, 2 views today

1、MySQL Router介绍

MySQL Router 是InnoDB Cluster(MySQL shell + Router + master-slave replication)的一部分,轻量级中间件,在应用和后端数据库之间起到透明的路由分发的作用。
MySQL Router 8.0推荐搭配MySQL Server 8.0 和 5.7 使用。
部署建议:建议router与应用部署在一起,这样的好处
  • 应用通过socket连接router
  • 减少网络延迟
  • MySQL无需创建额外的账号给router
  • 与应用同时扩展

2、部署Router 8.0 + master-slave replication

环境说明:

角色 IP hostname version
MySQL Router 10.0.2.233 pd-03 8.0.20
MySQL master 10.0.2.230 pd-01 5.7.24
MySQL slave 10.0.2.231 tikv-02 5.7.24
MySQL slave 10.0.2.232 tikv-03 5.7.24

2.1 下载二级制 Router 包

2.2 解压安装

解包
查看目录结构
将命令目录加入到环境变量中

2.3 配置

2.3.1 创建相关目录
2.3.2 修改配置文件
参数说明:
参数 说明
logging_folder      日志文件路径
connect_timeout  router连接MySQL server的超时时间,默认1秒,范围1-65536。read-write模式,超时时间设置的稍大写,防止误认为主库不可用,而去连接备用主库。 read-only模式,尽量设置的小些。
read_timeout  用于控制router从MySQL实例读取数据的最大时间,默认是50秒。
level 日志记录级别。DEBUG,NOTE,INFO,WARNING,ERROR,SYSTEM,FATAL。INFO,记录普通消息、警告和错误。DEBUG则用于排查错误,展现额外的诊断信息。
bind_address router服务所在的主机IP,默认写作0.0.0.0,表示只有本机可以访问。
bind_port router的服务端口,router分为两个端口,只读和读写。应用通过这两个端口连接router。
mode router的模式,两种: read-write、read-only。
destinations  router连接的目录MySQL实例的信息,格式为 IP:port,可以是一个,也可以是多个。
routing_strategy  路由策略。first-available,next-available,round-robin,round-robin-with-fallback 。
2.3.3 启动mysql router
查看是否启动成功

 

3、Router读测试

MySQL  Router设计的非常蛋疼,也很弱智,远远不如mycat、atlas等中间件,无法自身实现读写分离功能。
router启动时会启动读写端口(7001和7002,),应用程序需手动填写读端口、写端口实现读写分离。
router有两个端口,一个负责读、一个负责写。比如上面的配置文件中,端口7001负责写,端口7002负责读。
我们则需要配置应用的写模块指向端口7001,读模块指向端口7002。是不是非常不方便,router用的少是有原因的。
在上面的配置文件中,从库的路由策略为 routing_strategy=round-robin ,也就是轮询。下面我们测试通过router轮询从库。
可以看到,很规律的轮流访问 tikv-02(10.0.2.231)和 tikv-03(10.0.2.232)。

 

4、router写测试

写操作只能对应一个MySQL实例。
但是配置文件中,destinations也可以写多个MySQL 实例,并通过routing_strategy 参数确定何时访问第二个、第三个MySQL实例。
routing_strategy的各种策略:
first-available 新连接路由到destinations列表中的第一个可用MySQL 实例。当第一个MySQL实例不可用,那么路由到第二个MySQL实例,如果第二个MySQL实例也不可用,那么路由到第三个MySQL实例。当列表中所有实例都不可用,那么停止工作。
next-available 与first-available类似,都是连接列表中的第一个可用的MySQL实例。不同的是,如果列表中的MySQL实例被标注为不可连接,那么它就从列表中排除,直到重启router。
当MySQL replication 集群中主库宕机后,无论是哪种策略,都无法主动判断出新主库的IP地址,从而让业务继续可用。
因此,router中,主库[routing:primary]中,destinations只写一个主库的IP。

 

5、总结

Router 是MySQL官方提供的一款“轻量级”中间件,其提供read-write、read-only两个端口,用于应用根据不同功能模块连接读写或者只读。
Router,并不是我之前想象的,应用连接Router的IP,剩余的连接主库还是从库都由Router自身完成,这让我很失望。
Router 并没有提供完善的读写分离功能,这点远远不如上古时代具有读写分离功能的Atlas;更别提具有分库分表的Mycat。
因此,Router是一个半拉子中间件,功能太弱。如果你的团队具有二次开发能力,那么可以自行实现读写分离功能;如果不具备开发能力,那么Router不具备使用价值。

 

参考:

发表评论

必填项已用*标注