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

AWS CDK为Amazon Aurora添加只读副本时如何获取IDatabaseInstance

问题根因

DatabaseInstanceReadReplica 构造函数仅适用于非集群版的单机RDS实例创建只读副本,不适用于Amazon Aurora集群架构。
Aurora是计算存储分离的分布式集群架构,只读副本是集群内的原生读计算节点,和写节点共享底层集群存储,不是独立于集群存在的单实例资源,因此该构造函数要求的IDatabaseInstance类型入参和DatabaseCluster类型天然不匹配,直接传集群实例必然报类型错误。

正确配置方法

不需要使用DatabaseInstanceReadReplica,根据你的需求二选一即可:

  • 方案1:初始化集群时直接指定总实例数
    你原有代码中的instances参数代表集群内的总数据库实例数,默认值1代表仅创建1个写实例。如果需要N个只读副本,直接将该参数值设置为1+N,CDK会自动完成1个写节点+N个只读副本的集群创建,所有读节点默认接入集群读终端节点,内置读写分离能力。
  • 方案2:集群创建完成后单独追加自定义配置的只读副本
    调用DatabaseCluster实例自带的addReader方法即可添加自定义配置的只读副本,替换原有错误代码如下:
const dbCluster = new rds.DatabaseCluster(this, 'Database', {
  parameterGroup,
  engine: engine,
  credentials: rdsCredentials,
  cloudwatchLogsExports:['slowquery','general','error','audit'],
  backup: backupProps,
  instances: 1, // 初始化仅创建1个写实例
  storageEncrypted:true,
  removalPolicy: cdk.RemovalPolicy.DESTROY,
  clusterIdentifier: dbInfos['cluster'],
  defaultDatabaseName :dbInfos['database'],
  instanceProps: {
    instanceType: instanceType,
    vpcSubnets:props.vpc.selectSubnets({ subnetType: ec2.SubnetType.PRIVATE_ISOLATED }),
    vpc:props!.vpc,
    securityGroups:[dbSecurityGroup],
  },
  subnetGroup:subnetGroup
});

// 为Aurora集群添加只读副本
dbCluster.addReader('ReadReplica', {
  instanceType: ec2.InstanceType.of(ec2.InstanceClass.BURSTABLE2, ec2.InstanceSize.SMALL),
  // 支持自定义可用区优先级、故障转移优先级等读节点专属配置
});

补充说明:Aurora只读副本和单机RDS只读副本的实现逻辑有本质区别:单机RDS只读副本是基于Binlog日志复制的独立数据库实例,有独立的存储资源;而Aurora只读副本直接共享集群底层分布式存储卷,复制延迟通常在100ms以内,属于集群的组成部分,无法脱离集群单独创建。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 03:57:22