只读实例

更新时间: 2025-04-28 11:29:02

在少量写请求,但有大量读请求场景下,单个实例可能无法承受读取压力。您可以创建一个或多个只读实例来分担数据库压力,满足大量读取需求,增加应用的吞吐量。

简介

创建只读实例时会从备实例复制数据,数据与主实例一致。主实例的数据更新会自动同步到所有只读实例。

说明
  • 高性能本地盘主实例最多可创建5个只读实例,云盘主实例最多可创建32个只读实例。

  • 高性能本地盘实例的只读实例为高可用架构。

  • 云盘实例的只读实例为单节点架构,没有备节点,无法保障可用性。建议您购买多个只读实例,并使用libpq或JDBC实现自动故障转移,详情请参见自动故障转移和读写分离。您也可以通过数据库代理实现读写自动分离,更多信息,请参见什么是数据库代理

只读实例拓扑图如下图所示。

image

应用场景

  • 单个实例负载过大时,可以创建只读实例,将读请求转发至只读实例,以缓解主实例负载。

  • 主实例因备份或维护等原因暂不可用时,可将读请求转发至只读实例,保证部分业务的正常运行。

  • 报表分析等场景中,使用只读实例查询分析大量数据,不影响主实例。

  • 读写分离场景中,避免读写锁争抢问题,提升系统的性能和吞吐。

计费

支持包年包月和按量付费两种方式计费。包年包月费用请以实际购买页为准,按量付费具体费用请参见只读实例规格列表

功能特点

  • 地域和可用区:与主实例在同一地域,可以在不同的可用区。

  • 更改网络类型:可以与主实例不一致。

  • 账号与数据库管理:不需要维护账号与数据库,全部通过主实例同步。

  • 白名单:只读实例创建时会自动复制其主实例的白名单信息,但两者白名单相互独立。若您需要修改只读实例的白名单,请参见设置白名单

  • 监控与报警:提供系统性能指标的监控视图,如磁盘容量、IOPS、连接数、CPU使用率等。

  • 自动读写分离:配合主实例数据库代理功能,可使写请求自动转发到主实例,读请求自动转发到各个只读实例,实现读写请求的自动分流,减轻主实例的压力。若您需要为主实例开通数据库代理功能,请参见什么是数据库代理

  • 只读实例的数量:云盘主实例最多创建32个只读实例,高性能本地盘主实例最多创建5个只读实例。

注意事项

  • 实例备份:因主实例已有备份,只读实例暂不支持备份设置以及手动发起备份。

  • 数据迁移:不支持将数据迁移至只读实例。

  • 数据库管理:不支持创建或删除数据库。

  • 账号管理:不支持创建或删除账号,不支持为账号授权以及修改账号密码功能。

  • 规格及存储空间:

    • 云盘:只读实例的存储空间不能低于主实例。如果主实例内存大于只读实例内存,主实例变配时会重启只读实例。

    • 高性能本地盘:只读实例的规格和存储空间不能低于主实例。

  • 只读实例出现内核复制或其他不可预见的错误时,会重搭该只读实例。

  • 主实例被释放后,包年包月只读实例自动退款并释放,按量付费只读实例直接释放。

常见问题

  • Q:只读实例的计费方式可以转化吗?

    A:可以。具体操作,请参见按量付费转包年包月包年包月转按量付费

  • Q:变更只读实例的配置、释放只读实例、转化只读实例计费方式会影响主实例吗?

    A:不会。

  • Q:主实例上创建的账号在只读实例上可以用吗?

    A:主实例创建的账号会同步到只读实例,只读实例无法管理账号。账号在只读实例上只能进行读操作,不能进行写操作。

  • Q:只读实例可以转变为常规实例吗?比如作为容灾实例?

    A:暂不支持。

  • Q:能否对只读实例的数据进行备份?实例的自动备份能否在只读实例上进行?

    A:无需对只读实例进行备份,备份在主实例上进行,由于RDS PostgreSQL的备份使用快照备份,对主实例没有性能开销。

  • Q:只读实例是否支持并行复制?

    A:RDS PostgreSQL采用的是物理流复制,基于WAL日志文件同步加回放来实现数据复制能力,效率高,无需使用并行复制。

  • Q:事务日志的清除机制是怎样的?

    A:RDS PostgreSQL的WAL日志备份完成后,由内核在Checkpoint操作中自动清理。

  • Q:如何通过只读实例延迟时间判断复制是否正常?

    A:通常情况下只读实例延迟时间在1秒以内,如果超过1秒,说明数据同步延迟,极端场景下也可能出现断开的场景。

  • Q:复制延迟通常是什么原因引起的?

    A:常见原因及解决办法如下:

    • 原因1:主实例规格大,只读实例规格过小,导致主备延迟过大。

      解决方法:升级只读实例规格,更多信息,请参见变更配置

    • 原因2:参数max_standby_streaming_delay设置不合理,导致复制延迟较高。参数设置方法,请参见设置实例参数

      解决办法:调整参数max_standby_streaming_delay取值:

      • 该值设置较小时可以减少只读实例与主实例之间数据复制延迟,但过小时可能会导致只读实例的事务被取消。

      • 该值设置过大时可能会造成复制延迟。

上一篇: 实例回收站 下一篇: 创建PostgreSQL只读实例
阿里云首页 云数据库 RDS 相关技术圈