您可以通过创建只读实例满足大量的数据库读取需求,增加应用的吞吐量。RDS PostgreSQL通过物理复制方式,复制主实例生成只读实例,数据与主实例一致,主实例的数据更新也会自动同步到所有只读实例。

关于只读实例的更多介绍,请参见PostgreSQL只读实例简介

前提条件

您已创建PostgreSQL主实例,主实例满足以下条件:

  • 实例版本为PostgreSQL 10或以上版本。
  • 本地盘主实例的规格不低于8核32G(独享套餐)。
  • 实例系列为高可用版。
    说明 创建PostgreSQL只读实例前,请在基本信息页面确认实例系列。如果是基础版,且需要创建只读实例时,请点击变更配置,将基础版变更为高可用版后再创建只读实例,具体操作,请参见变更配置

注意事项

  • 只能创建与主实例规格族相同的只读实例,例如:通用型主实例只能创建通用型只读实例,独享型主实例只能创建独享型只读实例。更多信息,请参见RDS PostgreSQL主实例规格列表(X86)RDS PostgreSQL只读实例规格列表(X86)
  • 只能在主实例内创建只读实例,不能将已有实例切换为只读实例。
  • 由于创建只读实例时是从备实例复制数据,因此不会影响主实例。
  • 只读实例的参数不继承主实例上的参数设置,会生成默认的参数值,可以在只读实例的控制台上进行修改。
    重要 新通用型只读实例的参数会继承主实例上的参数设置。新通用型只读实例的更多信息,请参见RDS PostgreSQL只读实例(新通用型)
  • 创建的只读实例存储类型与主实例一致。
  • 本地盘只读实例的规格和存储空间不能低于主实例。
  • 云盘版只读实例的规格建议与主实例保持一致,或大于等于主实例规格的1/2,避免只读实例性能与主实例相差过大而导致的复制延迟、OOM等情况。
  • 云盘版只读实例存储空间不能低于主实例,且如果主实例内存大于只读实例内存,主实例变配时会重启只读实例。
  • 本地盘主实例最多创建5个只读实例,云盘主实例最多创建32个只读实例。
  • 本地盘实例的只读实例为高可用架构,云盘实例的只读实例为单节点架构(没有备节点)。
    说明 单节点架构没有备节点,因此无法保障可用性,建议您购买多个只读实例,使用libpq或JDBC实现自动故障转移,详情请参见自动故障转移和读写分离,您也可以通过数据库代理实现读写自动分离,更多信息,请参见什么是数据库代理
  • 创建只读实例会产生费用,支持包年包月和按量付费两种方式计费。包年包月费用请以实际购买页为准,按量付费具体费用请参见只读实例规格列表

创建只读实例

  1. 访问RDS实例列表,在上方选择地域,然后单击目标实例ID。
  2. 实例分布区域找到只读实例,单击添加
    说明 旧版控制台请在右侧单击添加只读实例
    添加只读实例
  3. 设置只读实例的参数。
    参数说明
    计费方式
    • 包年包月:长期使用RDS只读实例推荐使用包年包月(一次性付费),在页面左下角选择购买时长
    • 按量付费:短期使用RDS只读实例,请选择按量付费(按小时付费)。您可以先创建按量付费的只读实例,确认实例符合要求后再转包年包月。
    可用区可用区是地域中的一个独立物理区域,不同可用区之间没有实质性区别。相比单可用区,多可用区能提供可用区级别的容灾。
    实例规格
    • 通用规格(入门级):通用型的实例规格,独享被分配的内存和I/O资源,与同一服务器上的其他通用型实例共享CPU和存储资源。
    • 独享规格(企业级):独享或独占型的实例规格。独享型指独享被分配的CPU、内存、存储和I/O资源。独占型是独享型的顶配,独占整台服务器的CPU、内存、存储和I/O资源。
    说明 每种规格都有对应的CPU核数、内存、最大连接数和最大IOPS。本地盘主实例的只读实例规格不能低于主实例。规格详情请参见RDS PostgreSQL只读实例规格列表(X86)
    存储空间存储空间包括数据空间、系统文件空间、wal文件空间和事务文件空间。调整存储空间时最小单位为5GB。
    说明
    各规格的存储空间大小,请参见RDS PostgreSQL只读实例规格列表(X86)
    • 云盘主实例的只读实例存储空间不能低于主实例,且如果主实例内存大于只读实例内存,主实例变配时会重启只读实例。
    • 本地盘主实例的只读实例存储空间不能低于主实例。
  4. 单击下一步:实例配置,设置如下参数。
    参数说明
    网络类型与主实例网络类型一致,如果是专有网络,请确保只读实例的VPC与主实例的VPC一致。
  5. 单击下一步:确认订单
  6. 勾选服务协议,单击去支付,根据提示完成支付。
只读实例创建时间与主实例存储类型及磁盘大小相关,请参考以下预估时间,耐心等待只读实例创建。
  • 主实例存储类型为本地SSD盘,创建时间约为一次全量备份时间+10分钟。
  • 主实例存储类型为SSD云盘,创建时间约为一次全量备份时间+20分钟。
  • 主实例存储类型为ESSD云盘,创建时间约为20分钟。
说明
  • 创建只读实例期间对主实例无影响,创建成功后会在主实例中产生一个WAL Sender的进程,用于发送WAL日志到只读实例。
  • RDS PostgreSQL通过快照的方式搭建只读实例,与数据量大小无关。

查看只读实例

  • 在实例列表中查看只读实例
    1. 登录RDS管理控制台,在左侧单击实例列表,然后在上方选择地域。
    2. 在实例列表中找到只读实例,单击该只读实例的ID。
  • 在主实例的基本信息页面查看只读实例
    1. 访问RDS实例列表,在上方选择地域,然后单击目标实例ID。
    2. 在主实例的基本信息页面,把鼠标悬停于只读实例的数量上,单击只读实例的ID。主实例内跳转只读实例

查看只读实例的延迟时间

只读实例同步主实例的数据时,可能会有一定的延迟。您可以在只读实例的基本信息页面查看延迟时间。

只读实例延迟

相关API

API描述
创建只读实例创建RDS只读实例

常见问题

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

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

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

    A:暂不支持。

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

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

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

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

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

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

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

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

  • Q:复制延迟通常是什么原因引起的?
    A:常见原因及解决办法如下:
    • 原因:主实例规格大,只读实例规格过小,导致主备延迟过大。

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

    • 原因:主实例存在大量事务,导致WAL日志堆积。

      解决办法:避免在主实例中配置大事务,将大事务拆分为小事务。