Read-Only模式支持从库的高可用和负载均衡

客户的业务如果采用主从MySQL集群, 一个好的架构设计方法,就是在业务层分离主库操作和从库操作。 对于写SQL和事务这样需要发送到主库的操作,业务直连主库;而对于单纯的读SQL,业务将连接到一个或多个从库。在这种架构下,使用读写分离中间件并开启Read-Only模式, 将能够实现对从库的高可用和负载均衡。

读写分离中间件Read-Only模式实现从库的高可用和负载均衡的原理, 是中间件收到一个业务连接后,只连接一个或多个从库而不连接主库;后续业务发来的请求,如果是写SQL则报错,如果是读SQL则路由到一个从库。 具体而言,又细分为长连接和短连接两种模式:

长连接模式:

在长连接模式下,读写分离中间件收到一个业务连接后,会跟后端所有从库建立连接。 此后对于业务发来的读SQL请求,将根据客户在控制台配置的分发权重,来分发到某一个从库。如果某个从库异常,当前SQL请求将报错, 并将后续业务发来SQL,分发到其他从库。

短连接模式:

在短连接模式下,读写分离中间件收到一个业务连接后,会按照用户配置的读请求比例,来挑选从库建立连接。此后对于业务发来的读SQL请求,固定路由到这个从库,如果这个从库异常,则整个业务连接也将断开。

默认情况下,Read-Only是默认关闭的,可以通过uset read_only_mode命令,来配置Read-Only模式。

长连接模式: uset read_only_mode=1;

短连接模式:uset read_only_mode=2;

查看当前Read-Only模式: ushow rwproxy;

示例:

image