创建RDS PostgreSQL只读实例

当您面临数据库读取压力大幅增加时,云数据库RDS PostgreSQL支持创建只读实例来扩展读取能力,提高应用的整体吞吐量。只读实例使用物理复制技术,能够实时同步主实例数据,确保数据的一致性。

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

前提条件

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

  • 实例版本:目标实例版本仍在售卖中,已停售版本不支持创建只读实例,详情请参见已停售版本

  • 实例系列:高可用系列。

  • 实例规格:

    • 云盘:无特殊要求。

    • 本地盘:规格为独享套餐(8核32 GB以上)。

  • 计费方式:包年包月或按量付费,Serverless计费方式的实例暂不支持创建只读实例。

说明

创建PostgreSQL只读实例前,请在基本信息页面确认实例系列及规格信息。如果不满足要求,且需要创建只读实例时,请单击变更配置,将基础系列变更为高可用系列后再创建只读实例,具体操作,请参见变更配置

注意事项

  • 创建只读实例时,必须选择与主实例相同的VPC,否则将会创建失败并且退款。

  • 只能在主实例内创建只读实例,不能将已有实例切换为只读实例。

  • 由于创建只读实例时是从备实例复制数据,因此不会影响主实例。

  • 只读实例的参数不继承主实例上的参数设置,会生成默认的参数值,可以在只读实例的控制台上进行修改。

    重要

    新通用型只读实例的参数会继承主实例上的参数设置。新通用型只读实例的更多信息,请参见RDS PostgreSQL只读实例规格列表

  • 创建的只读实例存储类型与主实例一致。

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

  • 云盘版只读实例的规格建议与主实例保持一致,或大于等于主实例规格的1/2,避免只读实例性能与主实例相差过大而导致的复制延迟、OOM等情况。

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

  • 创建的只读实例内存需满足如下要求:

    主实例内存范围

    只读实例内存要求

    (0 GB~64 GB]

    至少为主实例内存的1/4

    (64 GB~256 GB]

    至少为主实例内存的1/6

    (256 GB~9999 GB]

    至少为主实例内存的1/8

  • 本地盘主实例最多创建5个只读实例,云盘主实例最多创建32个只读实例。

  • 本地盘实例的只读实例为高可用架构,云盘实例的只读实例为单节点架构(没有备节点)。

    说明

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

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

创建只读实例

  1. 访问RDS实例列表,在上方选择地域,然后单击目标实例ID。

  2. 实例分布区域找到只读实例,单击添加

    说明

    旧版控制台请在右侧单击添加只读实例

    添加只读实例

  3. 设置只读实例的参数。

    参数

    说明

    计费方式

    • 包年包月:长期使用RDS只读实例推荐使用包年包月(一次性付费),在页面左下角选择购买时长

    • 按量付费:短期使用RDS只读实例,请选择按量付费(按小时付费)。您可以先创建按量付费的只读实例,确认实例符合要求后再转包年包月。

    产品类型

    仅当主实例存储类型ESSD云盘通用云盘时,才支持选择倚天版。

    标准版倚天版的更多信息,请参见产品类型

    可用区

    可用区是地域中的一个独立物理区域,不同可用区之间没有实质性区别。相比单可用区,多可用区能提供可用区级别的容灾。

    实例规格

    • 通用规格:通用型的实例规格,独享被分配的内存和I/O资源,与同一服务器上的其他通用型实例共享CPU和存储资源。

    • 独享规格:独享或独占型的实例规格。独享型指独享被分配的CPU、内存、存储和I/O资源。独占型是独享型的顶配,独占整台服务器的CPU、内存、存储和I/O资源。

    说明

    每种规格都有对应的CPU核数、内存、最大连接数和最大IOPS。本地盘主实例的只读实例规格不能低于主实例。规格详情请参见RDS PostgreSQL只读实例规格列表

    存储空间

    存储空间包括数据空间、系统文件空间、wal文件空间和事务文件空间。调整存储空间时最小单位为5GB。

    说明

    各规格的存储空间大小,请参见RDS PostgreSQL只读实例规格列表

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

    • 本地盘主实例的只读实例存储空间不能低于主实例。

  4. 单击下一步:实例配置,设置如下参数。

    参数

    说明

    网络类型

    默认与主实例网络类型、VPC主节点交换机保持一致。

    实例释放保护

    如果计费方式为按量付费,则可以为按量付费实例开启实例释放保护,防止按量付费实例被意外释放。更多信息,请参见开启和关闭实例释放保护

    资源组

    默认与主实例资源组相同,不支持修改。

    时区

    默认与主实例时区保持一致。

    SLR 授权

    无需配置,购买主实例时已授权。SLR授权的相关信息,请参见【产品/功能变更】2022年10月10日起创建RDS PostgreSQL实例需SLR授权

    实例描述

    设置实例名称,方便管理。

    标签

    支持创建实例时为实例绑定标签,实例创建后,可根据标签进行筛选。更多信息,请参见根据标签筛选实例

  5. 单击下一步:确认订单

  6. 勾选服务协议,单击去支付,根据提示完成支付。

只读实例创建时间与主实例存储类型及磁盘大小相关,请参考以下预估时间,耐心等待只读实例创建。

  • 主实例存储类型为SSD云盘,创建时间约为一次全量备份时间+20分钟。

  • 主实例存储类型为ESSD云盘,创建时间约为20分钟。

说明
  • 创建只读实例期间对主实例无影响,创建成功后会在主实例中产生一个WAL Sender的进程,用于发送WAL日志到只读实例。

  • RDS PostgreSQL通过快照的方式搭建只读实例,与数据量大小无关。

查看只读实例

  • 在实例列表中查看只读实例

    1. 登录RDS管理控制台,在左侧单击实例列表,然后在上方选择地域。

    2. 在实例列表中找到主实例,展开主实例的下拉列表。

      image

    3. 单击只读实例的ID。

  • 在主实例的基本信息页面查看只读实例

    1. 访问RDS实例列表,在上方选择地域,然后单击目标实例ID。

    2. 在主实例的基本信息页面,把鼠标悬停于只读实例的数量上,单击只读实例的ID。主实例内跳转只读实例

查看只读实例的延迟时间

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

只读实例延迟

相关API

API

描述

创建只读实例

创建RDS只读实例

常见问题

  • 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取值:

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

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