MySQL Router配置装备部署文件:
[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的相关文档。
测试体验:
MySQL Router以前民间的中间件是MySQL Proxy,这么多年不断是alpha版本,堪称业界事业。不外随着MySQL Router的宣告,官网着实已经无奈直接下载MySQL Proxy了。但Inside君仍是抉择对于MySQL Router以及MySQL Proxy做一个重大的功能测试。测试场景是全内存的SELECT操作,测试工具运用sysbench,测试情景是网易云主机。最终的测试服从如下图所示:
测试运用16线程的select.lua剧本的测试,比力短途客户端直连MySQL,短途客户端衔接MySQL Router,短途客户端衔接到MySQL Proxy,后两者需要再妨碍一个转发能耐衔接到目的MySQL数据库,因此功能确定会比直连MySQL方式要差。从服从看MySQL Router比直连MySQL功能要差15%,QPS平均值挨近20000。可是MySQL Proxy的测试服从QPS仅5700,简直惨无兽性。导致这样服从最紧张的原因是MySQL Proxy接管运用lua剧本语言,测试历程中CPU负载高达290%(4核CPU)。MySQL Proxy测试历程中CPU的运用率在50%摆布,展现较为平稳。
看来MySQL Router用来做负载失调是一个不错的抉择,特意是用来做高可用架构下的只读VIP,那末比力传统的LVS功能又会是奈何样呢?接着Inside君又比力了MySQL Router以及LVS的负载失调功能测试比力,同样是SELECT全内存测试,可是并发数提升至128个线程。测试服从如下所示:
可能发如今128个线程下单实例MySQL直连方式以及MySQL Router中间件方式已经不太大的差距,QPS都在26000摆布。当接管两个MySQL实例实现只读操作的负载失调时,可能发现MySQL Router的QPS在48000摆布,而LVS方式在52000摆布,功能提升8%,加倍紧张的是LVS转发效率器上根基不甚么负载。
MySQL Router短处:
上手快,很简略配置装备部署
较为晃动,功能中不碰着甚么下场
插件式的架构应承用户妨碍格外功能的扩展
缺陷:
仅支端庄大的负载失调功能
高可勤勉用有待进一步测试
尽管反对于Fabric元数据,可是不反对于分库分表(不患上不说是一个遗憾)
白名单,SQL统计功能,防火墙功能缺失
需要gcc 4.8以上版本反对于,老零星编译比力省事些