开通了读写分离功能后,您可以根据需求修改读写分离的延迟阈值和读权重分配。

更多详情请参见读写分离参数说明

本文仅适用于开通共享代理模式的实例。非共享代理模式的用户请参见什么是数据库代理

操作步骤

  1. 登录RDS管理控制台
  2. 在页面左上角,选择实例所在地域。选择地域
  3. 找到目标实例,单击实例ID。
  4. 在左侧导航栏中单击数据库连接数据库代理
  5. 选择读写分离标签页。
  6. 单击设置读写分离,修改设置信息。
    表 1. 读写分离参数说明
    参数 说明
    延迟阈值 只读实例同步主实例数据时允许的最长延迟时间。为避免只读实例读取的数据长时间和主实例不一致,当一个只读实例的延迟时间超过设置的延迟阈值,则不论该只读实例的读权重是多少,读请求都不会转发至该只读实例。

    取值范围为0秒到7200秒。受限于SQL的执行情况,只读实例有一定的几率会出现延迟,建议该值不小于30秒。

    读权重分配 实例的读权重越高,处理的读请求越多。例如,1个主实例和3个只读实例的读权重分别为0、100、200、0,则表示主实例不处理读请求(写请求仍然自动发往主实例),前两个只读实例按照1:2的比例处理读请求,第三个只读实例不会收到任何读写请求。
    • 系统分配:系统根据实例规格自动分配各个实例的读权重。后续该主实例下新增的只读实例也会自动按照系统分配的权重加入到读写分离链路中,无需手动设置。更多信息请参见系统权重分配规则
    • 自定义:手动设置各个实例的读权重,范围为0至10000。后续该主实例下新增只读实例的读权重默认为0,需要您手动修改。
    说明
    • 若只读实例被删除,则该实例的权重会被自动移除,其他实例权重不变。
    • 不支持为已经设置只读实例延时复制时间的实例设置权重。
  7. 单击确定

下一步(可选)

常见问题

  • 只读实例的读权重设置为0后,还可以访问它吗?

    通过读写分离地址无法访问读权重为0的只读实例,只能使用只读实例的内网/外网地址进行访问。通常这种需求是为了将某个只读实例仅提供给某个业务使用。

  • 为什么修改后的权重没有生效 ?

    修改权重后,新建的连接才会根据新权重进行分配,已存在的连接不会断开重连。

  • 为什么各节点的负载不符合配置的读权重?

    若各节点的负载与配置的读权重不同,主要检查如下两个方面:

    • 请求语句是否包含了事务。包含了事务的所有请求只会路由到主库(包括事务读)。
    • 是否只用了读写分离地址连接数据库。如果使用了主实例地址或者只读实例地址,这些地址收到的请求不会按权重分配。
  • 为什么主库读权重为0时还有大量读请求路由到主库?

    若读请求路由到主库,主要由如下两个原因造成:

    • 包含了事务的所有请求只会路由到主库(包括事务读)。
    • 所有被分配读权重的只读实例处于不可用状态或其延迟时间超过了您所设置的延迟阈值,系统将其判定为不可用状态。

相关文档

读写分离常见问题

相关API

API 描述
修改读权重和延迟阈值 修改RDS实例延迟阈值和读权重。