You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

AWS RDS Aurora 自动扩缩容时如何配置自定义只读副本实例类型

RDS只读副本自动扩缩容自定义实例类型实现方案

目前RDS原生自动扩缩容规则确实不支持自定义只读副本的实例类型,默认会继承主写入节点的规格,你可以通过以下两种方案实现需求:

方案一:原生自动扩缩容 + 后置规格修改触发器

该方案复用RDS原生的扩缩容阈值判断逻辑,仅在副本创建完成后自动修改规格,开发成本较低:

  • 操作步骤:
    1. 先正常在RDS控制台配置原生只读副本自动扩缩容规则,无需处理实例类型继承问题
    2. 创建Lambda函数,核心逻辑为:接收RDS实例创建事件,判断实例是否为目标集群的只读副本,若符合条件则调用modify_db_instance接口修改实例规格为目标值,参数ApplyImmediately设为true
    3. 在EventBridge中创建事件规则,匹配RDS的DB Instance Created事件,添加筛选条件限定所属集群、实例角色为只读副本,将触发目标设置为上述Lambda函数
    4. 为Lambda对应的IAM角色配置RDS实例修改权限、CloudWatch日志输出权限
  • 优缺点:优点是逻辑简单、改动量小;缺点是副本创建后会有1-2分钟的规格调整窗口期,期间副本不可用,不适合对副本扩容速度要求极高的场景。
  • 核心修改示例代码(Python boto3):
    import boto3
    rds_client = boto3.client('rds')
    rds_client.modify_db_instance(
        DBInstanceIdentifier='新创建的副本ID',
        DBInstanceClass='db.t3.medium',
        ApplyImmediately=True
    )
    

方案二:自定义自动扩缩容逻辑替代原生功能

该方案完全自研扩缩容逻辑,创建副本时直接指定目标规格,无二次调整的不可用窗口:

  • 操作步骤:
    1. 关闭RDS原生的只读副本自动扩缩容规则
    2. 在CloudWatch中创建对应扩缩容触发指标的告警(例如CPU使用率、只读请求QPS、复制延迟等)
    3. 分别编写扩容、缩容Lambda函数:扩容逻辑调用create_db_instance_read_replica接口时直接指定DBInstanceClass参数为db.t3.medium;缩容逻辑按照预设规则删除闲置只读副本
    4. 将CloudWatch告警的触发动作绑定到对应的扩缩容Lambda函数,额外添加冷却时间、副本数量校验逻辑避免重复触发扩缩容
    5. 为Lambda配置对应的RDS实例创建/删除权限、CloudWatch访问权限
  • 优缺点:优点是副本创建完成即可用,无需二次调整规格,扩缩容逻辑可完全自定义;缺点是需要自行维护整套扩缩容的阈值判断、异常处理逻辑,开发维护成本更高。
  • 核心创建副本示例代码(Python boto3):
    import boto3
    rds_client = boto3.client('rds')
    rds_client.create_db_instance_read_replica(
        DBInstanceIdentifier='自定义副本名称',
        SourceDBInstanceIdentifier='主实例ID',
        DBInstanceClass='db.t3.medium',
        ApplyImmediately=True
    )
    

注意:两种方案执行前都需要提前确认目标实例规格和你使用的RDS引擎版本、集群配置兼容,避免创建或修改实例时报错。

内容的提问来源于stack exchange,提问作者Hazard

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 02:57:02