初识Atlas MySQL Proxy

Abbot(t)Gloria 发布于3月前

Atlas MySQL Proxy目前使用在我们的服务中,在新浪的时候没有使用过,那时候都是通过应用层做主从分离,DNS做副库负载均衡,来到新公司后,第一次接触它,还是挺感谢的,今天简单聊聊。

核心功能

是一款MySQL代理软件,主要功能是主从分离、从库负载均衡、从库自动摘除。但本质上解决不了主库的单点分离,其本身也会是一个单点,需要配合SLB或者LVS使用。

辅助的功能包括安全过滤,比如防止执行危险的SQL语句,也有一些基于IP的授权机制,相当于MySQL的大门。

性能

作为一款代理软件,肯定有性能消耗,不过它重写了网络模型、线程模型,性能消耗可控,另外Proxy和MySQL之间有连接池,进一步减少了网络开销,不过Proxy和应用之间还是短链接(至少目前PHP是这样的)。

按照官方的测试,如果MySQL 访问量比较大,其支持的qps和执行时间比直连MySQL差不了多少。在配置上建议线程数是CPU核数的2倍,其本身比较消耗CPU。

从我个人的理解来看,未来主从分离还是在应用层解决,从库负载均衡可以使用SLB,减少性能的损耗。

从目前应用的情况来看,还是比较稳定的,即使后端MySQL负载高,Proxy本身是不受影响的。

配置

Atlas可以使用多个配置文件,每个配置文件可以有一个admin服务,服务可以重启,但经过测试,重启的时候,原有连接会丢失,这对应用有一定的影响。

在配置文件中可以配置多个从库,还支持权重分配。

admin管理命令行可以对后端MySQL进行配置,无需重启服务,动态配置还能持久化到配置文件中。

但在admin管理命令行中无法对从库进行权重配置,这也非常不方便(需要重启服务),有用户Issuse中也提到了这个问题,2014年官方回复说会支持,但其最新的2.21还是2015年发布的,也就是很久没有更新了。

对于一款成熟软件来说,长时间不更新有的时候说明可能要抛弃它了。

Atlas也可以记录日志,但配置的时候有点奇葩,慢查询日志和主日志混在一起,需要shell自行处理。

Atlas 也支持Sharding功能,但自己没有测试过。

作为一款proxy软件来说,Atlas功能是不错的,也不要期望它做太多的事情。

查看原文: 初识Atlas MySQL Proxy

  • silverostrich
  • purplegorilla
  • CowperFelix
  • ConstanceJulius
  • BauerWill
  • ConradOphelia
  • Nico(l)Dale