您可以通过创建只读实例满足大量的数据库读取需求,增加应用的吞吐量。RDS PostgreSQL通过物理复制方式,复制主实例生成只读实例,数据与主实例一致,主实例的数据更新也会自动同步到所有只读实例。
关于只读实例的更多介绍,请参见PostgreSQL只读实例简介。
前提条件
您已创建PostgreSQL主实例,主实例满足以下条件:
- 实例版本为PostgreSQL 10或以上版本。
- 本地盘主实例的规格不低于8核32G(独享套餐)。
- 实例系列为高可用版。
注意事项
- 只能创建与主实例规格族相同的只读实例,例如:通用型主实例只能创建通用型只读实例,独享型主实例只能创建独享型只读实例。更多信息,请参见RDS PostgreSQL主实例规格列表(X86)和RDS PostgreSQL只读实例规格列表(X86)。
- 只能在主实例内创建只读实例,不能将已有实例切换为只读实例。
- 由于创建只读实例时是从备实例复制数据,因此不会影响主实例。
- 只读实例的参数不继承主实例上的参数设置,会生成默认的参数值,可以在只读实例的控制台上进行修改。重要 新通用型只读实例的参数会继承主实例上的参数设置。新通用型只读实例的更多信息,请参见RDS PostgreSQL只读实例(新通用型)。
- 创建的只读实例存储类型与主实例一致。
- 本地盘只读实例的规格和存储空间不能低于主实例。
- 云盘版只读实例的规格建议与主实例保持一致,或大于等于主实例规格的1/2,避免只读实例性能与主实例相差过大而导致的复制延迟、OOM等情况。
- 云盘版只读实例存储空间不能低于主实例,且如果主实例内存大于只读实例内存,主实例变配时会重启只读实例。
- 本地盘主实例最多创建5个只读实例,云盘主实例最多创建32个只读实例。
- 本地盘实例的只读实例为高可用架构,云盘实例的只读实例为单节点架构(没有备节点)。说明 单节点架构没有备节点,因此无法保障可用性,建议您购买多个只读实例,使用libpq或JDBC实现自动故障转移,详情请参见自动故障转移和读写分离,您也可以通过数据库代理实现读写自动分离,更多信息,请参见什么是数据库代理。
- 创建只读实例会产生费用,支持包年包月和按量付费两种方式计费。包年包月费用请以实际购买页为准,按量付费具体费用请参见只读实例规格列表。
创建只读实例
- 访问RDS实例列表,在上方选择地域,然后单击目标实例ID。
- 在实例分布区域找到只读实例,单击添加。说明 旧版控制台请在右侧单击添加只读实例。
- 设置只读实例的参数。
参数 说明 计费方式 - 包年包月:长期使用RDS只读实例推荐使用包年包月(一次性付费),在页面左下角选择购买时长
- 按量付费:短期使用RDS只读实例,请选择按量付费(按小时付费)。您可以先创建按量付费的只读实例,确认实例符合要求后再转包年包月。
可用区 可用区是地域中的一个独立物理区域,不同可用区之间没有实质性区别。相比单可用区,多可用区能提供可用区级别的容灾。 实例规格 - 通用规格(入门级):通用型的实例规格,独享被分配的内存和I/O资源,与同一服务器上的其他通用型实例共享CPU和存储资源。
- 独享规格(企业级):独享或独占型的实例规格。独享型指独享被分配的CPU、内存、存储和I/O资源。独占型是独享型的顶配,独占整台服务器的CPU、内存、存储和I/O资源。
说明 每种规格都有对应的CPU核数、内存、最大连接数和最大IOPS。本地盘主实例的只读实例规格不能低于主实例。规格详情请参见RDS PostgreSQL只读实例规格列表(X86)。存储空间 存储空间包括数据空间、系统文件空间、wal文件空间和事务文件空间。调整存储空间时最小单位为5GB。 说明各规格的存储空间大小,请参见RDS PostgreSQL只读实例规格列表(X86)。- 云盘主实例的只读实例存储空间不能低于主实例,且如果主实例内存大于只读实例内存,主实例变配时会重启只读实例。
- 本地盘主实例的只读实例存储空间不能低于主实例。
- 单击下一步:实例配置,设置如下参数。
参数 说明 网络类型 与主实例网络类型一致,如果是专有网络,请确保只读实例的VPC与主实例的VPC一致。 - 单击下一步:确认订单。
- 勾选服务协议,单击去支付,根据提示完成支付。
只读实例创建时间与主实例存储类型及磁盘大小相关,请参考以下预估时间,耐心等待只读实例创建。
- 主实例存储类型为本地SSD盘,创建时间约为一次全量备份时间+10分钟。
- 主实例存储类型为SSD云盘,创建时间约为一次全量备份时间+20分钟。
- 主实例存储类型为ESSD云盘,创建时间约为20分钟。
说明
- 创建只读实例期间对主实例无影响,创建成功后会在主实例中产生一个WAL Sender的进程,用于发送WAL日志到只读实例。
- RDS PostgreSQL通过快照的方式搭建只读实例,与数据量大小无关。
查看只读实例
查看只读实例的延迟时间
只读实例同步主实例的数据时,可能会有一定的延迟。您可以在只读实例的基本信息页面查看延迟时间。

相关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日志堆积。
解决办法:避免在主实例中配置大事务,将大事务拆分为小事务。
- 原因:主实例规格大,只读实例规格过小,导致主备延迟过大。