
# 读写分离操作指导
DDM读写分离功能可以将只读查询的流量按比例分摊至下挂数据节点的主实例和只读实例，从而减轻主实例的工作负担，保障读写事务的性能。此功能对应用透明，业务代码无需改造，只需要在控制台上设置主实例和只读实例的读权重，即可实现将读流量按照权重分流到主实例和只读实例上，写流量不受影响，默认会分流到主实例上。一般来说该比例的设置需结合业务实际特点以及存储节点实际负载进行设置。
只读实例上的数据是从主实例上异步复制而来，所以存在毫秒级的延迟。如果只读查询对数据实时性要求不高（容忍亚秒级可见性延迟）且只读查询的开销较大并对业务核心读写事务有一定影响，设置主实例和只读实例的权重为0:100，即所有只读查询均由只读实例承担，更好的保证主实例的性能。对于其他场景，建议结合实际情况酌情调整。
#### 使用须知
- DDM内核版本大于等于3.1.0版本时，需要手动开启读写分离，然后调整只读实例和主实例的读权重来实现读写分离操作。
- 如果DDM内核版本小于3.1.0版本，系统默认开启读写分离，只需要调整只读实例和主实例的读权重即可以实现读写分离操作。
- 如果select语句带有hint或者在事务中做了数据修改的select语句，读请求都会下发主实例执行。
- 如果存储节点主实例故障，此时只读实例上Seconds_Behind_Master=NULL，只读查询仍会下发到主实例执行，需要尽快恢复主实例。
 
#### 前提条件
- 已购买DDM实例和带只读实例的数据节点。
- 已创建逻辑库。
 
#### 操作步骤
1. 登录分布式数据库中间件控制台。
2. 单击目标实例名称，进入实例基本信息页面。
3. 在左侧导航栏，单击"DN管理"页签。
4. 开启读写分离开关只影响读写组的节点。 
   - 内核版本大于等于3.1.0时，需手动开启读写分离，请参考[开启读写分离](https://support.huaweicloud.com/usermanual-ddm/ddm_10_1004.html)，然后继续进行[5]。
   
   - 内核版本小于3.1.0时，系统默认开启读写分离，忽略此步骤，请继续进行[5]。
   
   
   ![](https://support.huaweicloud.com/usermanual-ddm/public_sys-resources/note_3.0-zh-cn.png)
   您也可以通过创建只读组的方式，无需开启读写分离开关，使用只读组的内网连接地址进行读流量，具体请参见[创建只读组](https://support.huaweicloud.com/usermanual-ddm/ddm_06_0027.html)。
   
   
5. 设置读权重。
   
   具体操作请参考[设置读权重](https://support.huaweicloud.com/usermanual-ddm/ddm_10_1002.html)。
   
   
 
