设置最小保留实例数

一般情况下,因主节点故障或过载导致只读节点复制异常时,通过代理访问的整个集群将不可读不可写,但集群内的只读节点依然可提供读服务。您可以在数据库代理中设置最小保留实例数,在主节点故障或过载时保留一定的只读节点处理读请求,提高实例在异常情况下的可用性。

关于RDS数据库代理的使用问题和更多相关信息,欢迎加入用户钉钉群(106730000316)进行咨询、反馈和交流 。

功能简介

通过设置最小保留实例数,集群在异常情况下(如主节点异常宕机或只读节点复制中断)可保留一定的只读节点处理读请求。用户设置最小保留实例数后,数据库代理内至少会有min{最小保留实例数,正常运行且权重非0的只读节点个数}个只读节点提供服务。

说明

只读节点正常运行指节点的运行状态为运行中,对其复制状态无要求。

使用场景

最小保留实例数主要用于以下两种场景:

  • 主节点异常宕机导致只读节点复制中断。

    可设置通过最小保留实例数,使代理地址依然能提供读能力。

    image
  • 主节点写入量大,导致只读节点的复制延迟超过最大延迟阈值,从而影响负载均衡。

    当主节点写入量大导致只读节点的复制延迟超过最大延迟阈值时,所有读流量将被转发至主节点,可能使其过载甚至挂起。若设置最小保留实例数,保留的只读节点将分担读流量,防止主节点因CPU负载过高而挂起。

    image

节点保留策略

当可被路由的只读节点数量低于预设的最小保留实例数时,系统将按以下策略保留只读节点:

  1. 当前已被路由的只读节点依然保留,额外优先保留复制延迟高于最大延迟阈值(未复制中断)的节点,若此类节点不足,再保留复制中断的节点,直到达到最小保留实例数。

  2. 在满足上述优先级的情况下,若节点复制状态相同,则按节点读权重排序,优先保留读权重高的节点。

重要

设置最小保留实例数后,复制延迟超过最大延迟阈值的节点也可被路由,但读权重为0的节点不可被路由。

您可以通过下表中的示例场景更直观地理解节点保留策略:

  • 复制状态不同时的节点保留示例

    场景

    最小保留实例数

    最大延迟阈值

    RO1(复制延迟)

    RO2(复制延迟)

    RO3(复制延迟)

    代理是否可读

    可读节点

    1

    1

    -1

    -1

    -1

    -1

    RO1

    2

    -1

    50

    60

    RO2

    3

    1

    30

    0

    40

    40

    RO1

    4

    40

    50

    60

    RO1

    5

    -1

    -1

    -1

    RO1

    6

    -1

    50

    60

    RO2

    7

    2

    30

    20

    60

    40

    RO1,RO2

    8

    20

    -1

    60

    RO1,RO3

    9

    20

    -1

    -1

    RO1,RO2

    说明

    复制延迟为-1时表示节点复制中断,0表示无复制延迟,大于0表示有复制延迟但未复制中断,RO表示只读节点。

  • 复制状态相同(读权重不同)时的节点保留示例

    场景

    最小保留实例数

    RO1(节点权重)

    RO2(节点权重)

    RO3(节点权重)

    是否可读

    可读节点

    10

    2

    0

    20

    0

    RO2

    11

    0

    0

    0

    12

    0

    20

    20

    RO2,RO3

    说明

    读权重为0时表示节点不参与路由,大于0表示节点正常参与路由。

前提条件

已开通数据库代理,且代理的内核版本不低于2.9.5。具体操作,请参见开通数据库代理

注意事项

  • 设置了最小保留实例数后,流量可能会路由至超过最大延迟阈值的只读节点。

  • 最小保留实例数对于读写模式和只读模式都适用。

操作步骤

  1. 访问RDS实例列表,在上方选择地域,然后单击目标实例ID。

  2. 在左侧导航栏,单击数据库代理

  3. 连接信息区域,在目标代理连接地址的操作列,单击修改配置

  4. 在弹出的对话框中,填写最小保留实例数,并单击确定

相关API

API

描述

DescribeDBProxyEndpoint - 查询数据库代理的连接地址信息

查询RDS实例数据库代理的连接地址信息。

ModifyDBProxyEndpoint - 配置数据库代理连接地址访问策略

修改RDS实例数据库代理连接地址访问策略。