美文网首页
MySQL Route 调研

MySQL Route 调研

作者: 单车变摩托_0463 | 来源:发表于2018-11-13 15:51 被阅读0次

    简介

    MySQL Router是MySQL官方提供的一个轻量级中间件,可以在应用程序与MySQL服务器之间提供透明的路由方式。主要用以解决MySQL主从库集群的高可用、负载均衡、易扩展等问题。
    官方文档

    关键特性

    • router是一个流量转发层,其功能角色,类似于Nginx、LVS
    • router本身不会对请求“拆包”,所以我们无法在Router中间件上实现比如“SQL审计”、“隔离”、“限流”、“分库分表”等。但是router提供了plugin机制,你可以开发自己的plugin来扩展router的额外特性(C语言)

    总结上述两点得知:

    • router以路由的方式,支持读写分离
    • router支持读、写负载均衡
    • router支持只读服务的健康监测
    • router不支持mysql server 的master、slave探测及自动切换

    详细说明

    从router的配置说起

    [mysql@hdp2~]$more /etc/mysqlrouter.conf
    [DEFAULT]
    # 日志路径
    logging_folder = /home/mysql/mysql-router-2.1.6/log
     
    # 插件路径
    plugin_folder = /home/mysql/mysql-router-2.1.6/lib/mysqlrouter
     
    # 配置路径
    config_folder = /home/mysql/mysql-router-2.1.6/config
     
    # 运行时状态路径
    runtime_folder = /home/mysql/mysql-router-2.1.6/run
     
    # 数据文件路径
    data_folder = /home/mysql/mysql-router-2.1.6/data
     
    [logger]
    # 日志级别
    level = INFO
     
    # 以下选项可用于路由标识的策略部分
    [routing:basic_failover]
    # Router地址
    bind_address = 172.16.1.125
    # Router端口
    bind_port = 7001
    # 读写模式
    mode = read-write
    # 目标服务器
    destinations = 172.16.1.126:3306,172.16.1.127:3306
     
    [routing:load_balance]
    bind_address = 172.16.1.125
    bind_port = 7002
    mode = read-only
    destinations = 172.16.1.126:3306,172.16.1.127:3306
     
    [mysql@hdp2~]$
    

    这里值得一提的是mode参数,该参数可选值为read-write、read-only,但实际作用并不是字面含义所示。

    • read-write模式,将采用“首个可用”算法,优先使用第一个server,当第一个server(即172.16.1.126:3306)不可达时,将会Failover到第二个server(172.16.1.127:3306),依次进行。如果都不可达,那么此端口上的请求将会被中断,此端口将不能提供服务,且此时所属的路由策略将不可用。需要注意,此算法只遍历一次列表,即逐个验证destinations中的Server,不会循环。一旦所有的Servers依次验证且不可用后,本条路由策略将不能继续服务,内置状态设定为aborted,即使此后Servers恢复上线,也不能继续对Client提供服务,因为它不会与Servers保持心跳检测。对于Router而言,直接拒绝Client连接请求,只有重启Router节点才能解决。

    • read-only模式:将采用“轮询”算法,依次选择Server新建连接,如果某个Server不可达,将会重试下一个Server,如果所有的Server都不可达,那么此端口上的请求将中断,即读写操作将不可用。同时Router将会持续与每个Server保持心跳探测,当恢复后重新加入Active列表,此后那些新建连接请求将可以分发给此Server。

    因为Router不会对TPC拆包,所有“read-write”、“read-only”并不会干扰实际的SQL执行。严格来说,这两种mode映射两种“路由算法”:“首个可用”、“轮询”;除此之外,再无特殊含义。因此,我们只能在应用的配置文件中,分别为读、写设定不同的配置,使用不同的绑定端口。

    相关文章

      网友评论

          本文标题:MySQL Route 调研

          本文链接:https://www.haomeiwen.com/subject/qidlfqtx.html