Amazon RDS for PostgreSQL - Amazon Relational Database Service

Amazon RDS for PostgreSQL

Amazon RDS 支持运行多种 PostgreSQL 版本的数据库实例。有关可用版本列表,请参阅可用的 PostgreSQL 数据库版本

注意

定于 2022 年 4 月 26 日弃用 PostgreSQL 9.6。有关更多信息,请参阅 弃用 PostgreSQL 版本 9.6

可创建数据库实例和数据库快照、时间点还原和备份。运行 PostgreSQL 的数据库实例支持多可用区部署、只读副本、预置 IOPS,可以在 Virtual Private Cloud (VPC) 内创建此类数据库实例。您还可以使用安全套接字层 (SSL) 连接到运行 PostgreSQL 的数据库实例。

创建数据库实例之前,确保完成 设置 Amazon RDS 环境 中的步骤。

您可以使用任何标准 SQL 客户端应用程序从客户端计算机对实例运行命令。此类应用程序包括 pgAdmin(用于 PostgreSQL 的流行开源管理和开发工具)或 psql(PostgreSQL 安装包含的命令行实用程序)。为了提供托管服务体验,Amazon RDS 未提供数据库实例的主机访问权限。并且它还限制了对需要高级权限的某些系统程序和表的访问。Amazon RDS 支持使用任何标准 SQL 客户端应用程序访问数据库实例上的数据库。Amazon RDS 不允许使用远程登录或安全外壳(SSH)直接从主机进行访问数据库实例。

Amazon RDS for PostgreSQL 符合很多行业标准。例如,您可以使用 Amazon RDS for PostgreSQL 数据库构建符合 HIPAA 标准的应用程序,并存储与医疗保健相关的信息。这包括根据与 AWS 签订的完整业务合作协议 (BAA) 存储受保护的健康信息 (PHI)。Amazon RDS for PostgreSQL 还满足联邦风险与授权管理项目(FedRAMP)安全要求。在AWS GovCloud (US)区域中,Amazon RDS for PostgreSQL 获得了 FedRAMP 联合授权委员会(JAB)的 FedRAMP 高基准临时授权操作(P-ATO)。有关支持的合规性标准的更多信息,请参阅AWS云合规性

要将 PostgreSQL 数据导入到数据库实例中,请按将数据导入 Amazon RDS 上的 PostgreSQL一节中的信息操作。

Amazon RDS for PostgreSQL 的常见管理任务

下面是对 Amazon RDS for PostgreSQL 数据库实例执行的常见管理任务,以及有关每个任务的相关文档的链接。

以下是本指南中可以帮助您了解和使用 RDS for PostgreSQL 的重要特征的其他章节列表:

使用数据库预览环境

PostgreSQL 社区会不断发布新的 PostgreSQL 版本和扩展,包括测试版。这让 PostgreSQL 用户有机会尽早试用新的 PostgreSQL 版本。要了解有关 PostgreSQL 社区测试版发布流程的更多信息,请参阅 PostgreSQL 文档中的测试版信息。同样,Amazon RDS 将某些 PostgreSQL 测试版作为预览版提供。这允许您使用预览版创建数据库实例,并在数据库预览环境中测试其特征。

数据库预览环境中的 RDS for PostgreSQL 数据库实例在功能上类似于其他 RDS for PostgreSQL 实例。但是,不能将预览版用于生产。

请注意以下重要限制:

  • 所有数据库实例在创建之后的 60 天删除,包括其所有备份和快照。

  • 您只能在 Virtual Private Cloud (VPC) 中创建基于 Amazon VPC 服务的数据库实例。

  • 您只能使用通用 SSD 和预置 IOPS SSD 存储。

  • 您无法从 AWS Support 获得数据库实例的帮助。而是可以将您的问题发布到 AWS 托管的问答社群,即 AWS re:Post

  • 您无法将数据库实例的快照复制到生产环境。

预览版支持以下选项:

  • 只能使用 M6i、R6i、M6g、M5、T3、R6g 和 R5 实例类型创建数据库实例。有关 RDS 实例类的更多信息,请参阅数据库实例类

  • 您可以同时使用单可用区和多可用区部署。

  • 您可以使用标准 PostgreSQL 转储和加载函数从数据库预览环境中导出数据库或将数据库导入数据库预览环境。

数据库预览环境中不支持的功能

以下功能在预览环境中不可用:

  • 跨区域快照复制

  • 跨区域只读副本

在数据库预览环境中创建新数据库实例

使用以下过程在预览环境中创建数据库实例。

在数据库预览环境中创建数据库实例
  1. 登录 AWS Management Console 并通过以下网址打开 Amazon RDS 控制台:https://console.aws.amazon.com/rds/

  2. 从导航窗格选择 Dashboard (控制面板)

  3. 在控制面板页面中,找到控制面板页面上的 Database Preview Environment(数据库预览环境)部分,如下图所示。

    预览环境部分,链接显示在 RDS 控制台、控制面板中

    您可以直接导航到数据库预览环境。在继续操作之前,您必须确认并接受这些限制。

    Preview environment limitations(预览环境限制)对话框
  4. 要创建 RDS for PostgreSQL 数据库实例,请遵循与创建任何 Amazon RDS 数据库实例相同的流程。有关更多信息,请参阅创建数据库实例中的控制台过程。

要使用 RDS API 或 AWS CLI 在数据库预览环境中创建实例,请使用以下端点。

rds-preview.us-east-2.amazonaws.com

数据库预览环境中的 PostgreSQL 版本 17

注意

这是 Amazon RDS PostgreSQL 版本 17 的预览文档。本文档随时可能更改。

PostgreSQL 版本 17 RC1 现可在 Amazon RDS 数据库预览环境中使用。PostgreSQL 版本 17 RC1 包含一些改进,如以下 PostgreSQL 文档中所述:PostgreSQL 17 RC1 Released!

有关数据库预览环境的信息,请参阅使用数据库预览环境。要从控制台中访问预览环境,请选择 https://console.aws.amazon.com/rds-preview/

可用的 PostgreSQL 数据库版本

Amazon RDS 支持运行多种 PostgreSQL 版本的数据库实例。在创建新数据库实例时,您可以指定目前可用的任何 PostgreSQL 版本。您可以指定主要版本(例如 PostgreSQL 14),以及所指定主要版本的任何可用的次要版本。如果没有指定任何版本,Amazon RDS 会默认使用可用的版本,通常是最新的版本。如果指定了主要版本但未指定次要版本,Amazon RDS 将默认使用您指定的主要版本的最新版本。

要查看受支持版本的列表以及新创建的数据库实例的默认值,请使用 describe-db-engine-versions AWS CLI 命令。例如,要显示默认 PostgreSQL 引擎版本,请使用以下命令:

aws rds describe-db-engine-versions --default-only --engine postgres

有关 Amazon RDS 支持的 PostgreSQL 版本的详细信息,请参阅 Amazon RDS for PostgreSQL 发布说明

如果您还没有准备好在 RDS 标准支持终止日期之前手动升级到新的主要引擎版本,Amazon RDS 将在 RDS 标准支持终止日期之后自动将您的数据库注册到 Amazon RDS Extended Support。然后,您可以继续运行 RDS for PostgreSQL 11 及更高版本。有关更多信息,请参阅使用 Amazon RDS 扩展支持Amazon RDS 定价

弃用 PostgreSQL 版本 10

2023 年 4 月 17 日,Amazon RDS 计划按照如下安排弃用 PostgreSQL 10。我们建议您采取措施,将在主要版本 10 上运行的 PostgreSQL 数据库升级到更高版本,例如 PostgreSQL 版本 14。要从 10.19 之前的 PostgreSQL 版本升级 RDS for PostgreSQL 主要版本 10 数据库实例,我们建议您先升级到版本 10.19,然后再升级到版本 14。有关更多信息,请参阅 升级适用于 Amazon RDS 的 PostgreSQL 数据库引擎

操作或建议 日期

PostgreSQL 社区计划弃用 PostgreSQL 10,在此日期之后不会提供任何安全补丁。

2022 年 11 月 10 日

开始将 RDS for PostgreSQL 10 数据库实例升级到更高的主要版本,例如 PostgreSQL 14。虽然可以继续还原 PostgreSQL 10 快照并创建版本 10 的只读副本,但请注意此弃用安排中的其他关键日期及其影响。

直至 2023 年 2 月 14 日

在此日期之后,您无法通过 AWS Management Console或 AWS CLI 使用 PostgreSQL 主要版本 10 创建新的 Amazon RDS 实例。

2023 年 2 月 14 日

在此日期之后,Amazon RDS 会自动将 PostgreSQL 10 实例升级到版本 14。如果还原 PostgreSQL 10 数据库快照,Amazon RDS 会自动将还原的数据库升级到 PostgreSQL 14。

2023 年 4 月 17 日

有关 RDS for PostgreSQL 版本 10 弃用的更多信息,请参阅 AWS re:Post 中的 [公告]:RDS for PostgreSQL 10 弃用

弃用 PostgreSQL 版本 9.6

2022 年 3 月 31 日,Amazon RDS 计划按照如下安排弃用 PostgreSQL 9.6。此前宣布的日期由 2022 年 1 月 18 日延长至 2022 年 4 月 26 日。您应尽快将 PostgreSQL 9.6 数据库实例升级到 PostgreSQL 12 或更高版本。建议先升级到次要版本 9.6.20 或更高版本,然后直接升级到 PostgreSQL 12,不必升级到中间主要版本。有关更多信息,请参阅 升级适用于 Amazon RDS 的 PostgreSQL 数据库引擎

操作或建议 日期

PostgreSQL 社区停止支持 PostgreSQL 9.6,将不再为此版本提供错误修复或安全补丁。

2021 年 11 月 11 日

尽快开始将 RDS for PostgreSQL 9.6 数据库实例升级到 PostgreSQL 12 或更高版本。虽然可以继续还原 PostgreSQL 9.6 快照并创建版本 9.6 的只读副本,但请注意此弃用安排中的其他关键日期及其影响。

直至 2022 年 3 月 31 日

在此日期之后,您无法通过 AWS Management Console 或者 AWS CLI 使用 PostgreSQL 主要版本 9.6 创建新的 Amazon RDS 实例。

2022 年 3 月 31 日

在此日期之后,Amazon RDS 会自动将 PostgreSQL 9.6 实例升级到版本 12。如果还原 PostgreSQL 9.6 数据库快照,Amazon RDS 会自动将还原的数据库升级到 PostgreSQL 12。

2022 年 4 月 26 日

Amazon RDS for PostgreSQL 已弃用的版本

从 2021 年 3 月起,RDS for PostgreSQL 9.5 已遭弃用。有关 RDS for PostgreSQL 9.5 弃用的更多信息,请参阅从 Amazon RDS for PostgreSQL 版本 9.5 升级

若要了解有关 RDS for PostgreSQL 弃用策略的更多信息,请参阅 Amazon RDS 常见问题。有关 PostgreSQL 版本的更多信息,请参阅 PostgreSQL 文档中的版本控制策略

支持的 PostgreSQL 扩展版本

RDS for PostgreSQL 支持许多 PostgreSQL 扩展。PostgreSQL 社区有时将这些扩展称为模块。扩展针对 PostgreSQL 引擎提供的功能进行了扩展。您可以在 PostgreSQL 版本的默认数据库参数组中找到 Amazon RDS 支持的扩展列表。您还可使用 psql 通过显示 rds.extensions 参数来查看当前扩展列表,如以下示例中所示。

SHOW rds.extensions;
注意

rds.extensions 中使用 psql 参数时,可能不会准确显示在次要版本中添加的参数。

从 RDS for PostgreSQL 13 开始,某些扩展可以由数据库用户(而不是 rds_superuser)安装。它们称为可信扩展。要了解更多信息,请参阅 PostgreSQL 可信扩展

某些版本的 RDS for PostgreSQL 支持 rds.allowed_extensions 参数。这个参数允许 rds_superuser 限制可以在 RDS for PostgreSQL 数据库实例中安装的扩展。有关更多信息,请参阅 限制 PostgreSQL 扩展的安装

对于每个可用 RDS For PostgreSQL 版本支持的 PostgreSQL 扩展和版本的列表,请参阅《Amazon RDS for PostgreSQL 版本注释》中的 Amazon RDS 上支持的 PostgreSQL 扩展

限制 PostgreSQL 扩展的安装

您可以限制在 PostgreSQL 数据库实例上安装哪些扩展。默认情况下,不设置此参数,因此如果用户有添加扩展的权限,则可以添加任何受支持的扩展。为此,请将 rds.allowed_extensions 参数设置为一串以逗号分隔的扩展名称。通过向此参数添加扩展列表,您可以明确标识 RDS for PostgreSQL 数据库实例可使用的扩展。然后,只有这些扩展才能安装在 PostgreSQL 数据库实例中。

rds.allowed_extensions 参数的默认字符串为 '*',这意味着可以安装引擎版本可用的任何扩展。更改 rds.allowed_extensions 参数不需要重新启动数据库,因为它是动态参数。

PostgreSQL 数据库实例引擎必须是以下版本之一才能使用 rds.allowed_extensions 参数:

  • 所有 PostgreSQL 16 版本

  • PostgreSQL 15 及所有更高版本

  • PostgreSQL 14 及所有更高版本

  • PostgreSQL 13.3 及更高的次要版本

  • PostgreSQL 12.7 及更高的次要版本

要查看允许哪些扩展安装,请使用以下 psql 命令。

postgres=> SHOW rds.allowed_extensions; rds.allowed_extensions ------------------------ *

如果扩展是在其被 rds.allowed_extensions 参数列表排除之前安装的,则该扩展仍可以正常使用,并且诸如 ALTER EXTENSIONDROP EXTENSION 之类的命令将继续运行。但是,在扩展被限制后,限制扩展的 CREATE EXTENSION 命令将失败。

使用 CREATE EXTENSION CASCADE 安装扩展依赖项也受到限制。必须在 rds.allowed_extensions 中指定扩展及其依赖项。如果扩展依赖项安装失败,整个 CREATE EXTENSION CASCADE 语句将失败。

如果 rds.allowed_extensions 参数中未包含扩展,则尝试安装时将看到如下错误。

ERROR: permission denied to create extension "extension-name" HINT: This extension is not specified in "rds.allowed_extensions".

PostgreSQL 可信扩展

安装大部分 PostgreSQL 扩展都需要具备 rds_superuser 权限。PostgreSQL 13 推出了可信扩展,这些扩展减少了授予普通用户 rds_superuser 权限的需求。使用此特征,用户可以安装许多扩展(如果他们具有对当前数据库的 CREATE 权限,而不要求具备 rds_superuser 角色)。有关详细信息,请参阅 PostgreSQL 文档中的 SQL 创建扩展命令。

下面列出了具有对当前数据库的 CREATE 权限,但不需要具备 rds_superuser 角色的用户可以安装的扩展:

对于每个可用 RDS For PostgreSQL 版本支持的 PostgreSQL 扩展和版本的列表,请参阅《Amazon RDS for PostgreSQL 版本注释》中的 Amazon RDS 上支持的 PostgreSQL 扩展