

## 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 rw_proxy;

示例：

<!-- image-todo -->
