Amazon RDS 常见问题

一般性问题

Amazon Relational Database Service (Amazon RDS) 是一种托管服务,可以简化在中设置、操作和扩展关系数据库的过程。它可以在管理耗时的数据库管理任务的同时提供经济高效的可调容量,使您能够腾出时间专注于应用程序和业务。

Amazon RDS 允许您访问熟悉的 RDS for PostgreSQLRDS for MySQLRDS for MariaDBRDS for SQL ServerRDS for OracleRDS for Db2 数据库的功能。这意味着您当前用于现有数据库的代码、应用程序和工具也可以无缝用于 Amazon RDS。Amazon RDS 可以自动备份您的数据库,并使您的数据库软件版本保持最新。您可以灵活地扩展与关系数据库实例相关联的计算资源或存储容量,并从中受益。此外,Amazon RDS 还可通过复制轻松增强数据库可用性、改进数据耐久性或扩展读取密集型数据库工作负载中单一数据库实例的容量限制。与所有 AWS 服务相同,您无需预先投资,而且只需为所使用的资源付费。

Amazon Web Services 为开发人员提供了很多数据库备选项。Amazon RDS 让您能运行完全托管且功能完善的关系数据库,同时摆脱繁琐的数据库管理工作。使用我们在 Amazon EC2 上的众多关系数据库 AMI 中的一个,便可在云中管理您自己的关系数据库。这些备选项之间存在很大的不同,这使其中的某项可能更符合您的使用案例。有关挑选最适合您的解决方案的相关指南,请参阅 AWS 云数据库

是的,您可以使用 Amazon RDS on Outposts 在本地运行 Amazon RDS。请参阅 Amazon RDS on Outposts 常见问题了解其他信息。

是的,Amazon RDS 专家可以回答问题并提供支持。 联系我们,您将在一个工作日内收到我们的回复,讨论 AWS 如何能为您的组织提供帮助。

您可以使用 Amazon RDS 控制台在 EC2 计算实例和新的 Amazon RDS 数据库之间建立连接。在“创建数据库”页面上,选择“连接”部分中的“连接到 EC2 计算资源”选项。当您选择此选项时,Amazon RDS 会自动执行手动网络设置任务,例如创建 VPC、安全组、子网和入口/出口规则,以在您的应用程序和数据库之间建立连接。

此外,您可以在现有 Amazon RDS 数据库和 EC2 计算实例之间建立连接。为此,请打开 RDS 控制台,从数据库列表页面中选择一个 RDS 数据库,然后从“操作”菜单下拉列表中选择“设置 EC2 连接”。Amazon RDS 会自动设置您的相关网络设置,以在所选 EC2 实例和 RDS 数据库之间实现安全连接。

这种连接自动化提高了新用户和应用程序开发人员的工作效率。用户现在可以在几分钟内使用 EC2 计算实例上的 SQL 将应用程序或客户端快速无缝地连接到 RDS 数据库。

您可以通过 Amazon RDS 控制台在 AWS Lambda 函数和 Amazon RDS 或 Amazon Aurora 数据库之间建立连接。在 RDS 控制台上,从数据库列表页面中选择一个 RDS 或 Aurora 数据库,然后从“操作”菜单下拉列表中选择“设置 Lambda 连接”。Amazon RDS 会自动设置您的相关网络设置,以在所选 Lambda 函数和 RDS 或 Aurora 数据库之间建立安全连接。

我们建议您在设置此连接期间使用 RDS 代理。您可以使用现有 RDS 代理,也可以使用可在连接期间自动创建的新 RDS 代理来设置此连接。这种连接设置可以提高新用户和应用程序开发人员的工作效率。用户现在只需几分钟即可快速无缝地将无服务器应用程序或 Lambda 函数连接到 RDS 或 Aurora 数据库。

数据库实例

您可以将数据库实例视为一个云中的数据库环境,其中包含您所指定的计算和存储资源。您可以创建和删除数据库实例,定义/优化数据库实例的基础设施属性,还能通过 AWS 管理控制台Amazon RDS APIAWS 命令行界面控制访问权限和安全性。您可以运行一个或多个数据库实例,且每个数据库实例都可以支持一个或多个数据库或数据库架构,具体取决于引擎类型。

借助 AWS 管理控制台、Amazon RDS API 或 AWS Command Line Interface,您可以轻松创建数据库实例。要使用 AWS 管理控制台启动数据库实例,请单击“RDS”,然后单击“实例”选项卡上的“启动数据库实例”按钮。您可以从中指定数据库实例的参数,包括数据库引擎和版本、许可模式、实例类型、存储类型和存储量,以及主用户凭证。

您还可以更改数据库实例的备份保留策略、首选备份时段和计划维护时段。此外,您还可以使用 CreateDBInstance APIcreate-db-instance 命令创建数据库实例。

只要数据库实例可用,您即可通过 AWS 管理控制台中的数据库实例描述、DescribeDBInstances APIdescribe-db-instances 命令检索其端点。使用这个端点,您就可以用您最喜欢的数据库工具或编程语言构建与您的数据库实例直接相连所需的连接字符串。要允许对您正在运行的数据库实例发出的网络请求,您需要授予访问权限。有关如何构造连接字符串以及如何开始使用的详细说明,请参阅我们的入门指南

默认情况下,客户最多可以拥有 40 个 Amazon RDS 数据库实例。在这 40 个实例中,最多 10 个实例可以是 “已包含许可证” 模型中的 RDS for Oracle 或 RDS for SQL Server 数据库实例。在自带许可证 (BYOL) 模型中,这 40 个实例都可用于 Amazon Aurora、RDS for PostgreSQL、RDS for MySQL、RDS for MariaDB 和 RDS for Oracle。请注意,RDS for SQL Server 在单个数据库实例上具有最多 100 个数据库的限制。要了解更多信息,请参阅 Amazon RDS for SQL Server 用户指南

  • 适用于 Amazon Aurora 的 RDS:软件没有强制限制
  • 适用于 MySQL 的 RDS:软件没有强制限制
  • 适用于 MariaDB 的 RDS:软件没有强制限制
  • RDS for Oracle:每个实例 1 个数据库;软件对于每个数据库的架构数量没有强制限制
  • 适用于 SQL Server 的 RDS:每个实例最多 100 个数据库
  • 适用于 PostgreSQL 的 RDS:软件没有强制限制
  • RDS for Db2:每个实例最多 1 个数据库

以下是将数据导入 Amazon RDS 的多种方法:

有关数据导入和导出的更多信息,请参阅 MySQL 数据导入指南Oracle 数据导入指南SQL Server 数据导入指南PostgreSQL 数据导入指南Db2 数据导入指南

此外,AWS Database Migration Service 还可以帮助您安全地将数据库迁移到 AWS。

如有请求或要求,您可以通过 Amazon RDS 维护时段控制数据库实例修改、数据库引擎版本升级和软件修补时间。如果在给定的星期内安排了维护事件,该事件将在您确定的维护时段内启动。

需要使用 Amazon RDS 将数据库实例脱机的维护事件有扩展计算操作(从始至终通常只需要几分钟时间)、数据库引擎版本升级和必要的软件修补。仅针对安全和耐久的补丁自动安排必要的软件修补。这种修补很少发生(通常几个月一次),并且几乎不会要求过长的维护时段。

如果创建数据库实例时未指定首选周维护时段,系统将分配默认值 30 分钟。如果您希望在代您执行维护时修改此值,可以通过 AWS 管理控制台或使用 ModifyDBInstance APImodify-db-instance 命令修改数据库实例来执行该操作。如果选择这样操作,您的各个数据库实例可以执行不同的首选维护时段。

采用多可用区部署的方式运行数据库实例可进一步降低维护工作的影响。有关维护操作的更多信息,请参阅 Amazon RDS 用户指南

对于生产数据库,建议您启用增强型监控,它将提供对 50 多个 CPU、内存、文件系统和磁盘 I/O 指标的访问权限。您可以针对单个实例启用这些功能并选择粒度(直至 1 秒)。较高的 CPU 使用率会降低查询性能,因此建议您考虑扩展数据库实例类。有关监控数据库实例的更多信息,请参阅 Amazon RDS 用户指南

如果使用的是 RDS for MySQL 或 RDS for MariaDB,您可以访问数据库的慢查询日志来确定是否存在运行缓慢的 SQL 查询(如有)以及各个查询的性能特征。您可以设置“slow_query_log”数据库参数并查询 mysql.slow_log 表,以查看缓慢运行的 SQL 查询。有关更多信息,请参阅 Amazon RDS 用户指南

如果使用的是适用于 Oracle 的 RDS,您可以使用 Oracle 跟踪文件数据来确定慢查询。有关访问跟踪文件数据的更多信息,请参阅 Amazon RDS 用户指南。 

如果使用的是适用于 SQL Server 的 RDS,您可以使用客户端 SQL Server 跟踪来确定慢查询。有关访问服务器端跟踪文件数据的信息,请参阅 Amazon RDS 用户指南

数据库引擎版本

有关版本编号的详细信息,请参阅各个 Amazon RDS 数据库引擎的常见问题页面。

Amazon RDS 会逐渐增加对新的主要和次要数据库引擎版本的支持。支持的新版本的数量将有所不同,具体取决于引擎供应商或开发组织发布版本和补丁的频率和内容,以及我们的数据库工程团队对这些版本和补丁的彻底审查结果。不过,一般而言,我们计划在通用版本发布后 5 个月内支持新的引擎版本。

您在通过 AWS 管理控制台中的启动数据库实例操作或 CreateDBInstance API 创建新数据库实例时,可以指定当前受支持的任何版本(主要和次要)。请注意,并非所有数据库引擎版本在每个 AWS 区域都可用。

Amazon RDS 通过为您提供更高版本的受支持数据库引擎,使您的数据库实例保持最新。供应商或开发组织发布新版数据库引擎后,我们的数据库工程团队会对其进行全面测试,然后才会在 Amazon RDS 中提供相应版本。

建议您将数据库实例升级到最新的次要版本,因为它包含最新的安全和功能修复程序。与主要版本升级不同的是,次要版本升级仅包括与数据库引擎之前的次要版本 (主要版本相同) 向后兼容的数据库更改。 

如果新的次要版本不包含有益于 Amazon RDS 客户的修复程序,我们可能会选择不在 Amazon RDS 中提供该版本。在 Amazon RDS 中提供新的次要版本后不久,我们会将其设置为新数据库实例的首选次要版本。 

要手动将数据库实例升级到受支持的引擎版本,请使用 AWS 管理控制台中的修改数据库实例命令或者使用 ModifyDBInstance API,将数据库引擎版本参数设置为所需版本。默认情况下,系统将在下一维护时段应用升级。您也可以通过选择控制台 API 中的“立即应用”选项选择立即升级。

如果我们确定新的引擎次要版本和之前发布的次要版本相比包含了重要的错误修复程序,我们将为自动次要版本升级设为“是”的数据库实例安排自动升级。这些升级将被安排在客户指定的维护时段中进行。

我们会提供日程表以便您根据其制定计划,因为升级数据库引擎版本需要停机,即便对于多可用区实例也是如此。如果您希望关闭自动次要版本升级,只需将“自动次要版本升级”设置为“否”即可。

对于 RDS for Oracle 和 RDS for SQL Server,如果升级到更高的次要版本需要更改到不同的版次,即使您已启用自动次要版本升级设置,我们可能也不会安排自动升级。在这种情况下,是否安排自动升级将根据具体情况而定。

由于主要版本升级涉及一些兼容性风险,因此不会自动执行且必须由您启动 (除非主要版本已被弃用,请参见下文)。 有关将数据库实例升级到新的数据库引擎版本的更多信息,请参阅 Amazon RDS 用户指南

符合。您只需创建现有数据库实例的数据库快照,从该数据库快照进行还原以创建新的数据库实例,然后为新的数据库实例启动版本升级即可。之后,您可以在升级后的数据库实例副本上安全地进行测试,然后决定是否升级原始的数据库实例。

有关还原数据库快照的更多信息,请参阅 Amazon RDS 用户指南

  • 对于发布的主要版本 (如 MySQL 5.6、PostgreSQL 9.6),我们计划自 Amazon RDS 开始支持起,至少持续支持 3 年。
  • 对于次要版本 (如 MySQL 5.6.37、PostgreSQL 9.6.1),我们计划从 Amazon RDS 开始支持起,至少持续支持 1 年。

我们会定期弃用主要或次要引擎版本。主要版本至少在相应社区版本的社区生命周期结束或该版本不再接收软件修复或安全更新之前可用。对于次要版本,我们通常会在该版本存在严重错误或安全问题 (在更高的次要版本中已解决这些问题) 时将其弃用。

在我们努力满足这些指南要求的同时,有时候我们可能会很快否决特定的主要或次要版本,如存在安全问题时。万一出现这种情况,Amazon RDS 将自动升级您的数据库引擎以解决相关问题。所需时间会因不同的情况而异,具体取决于要解决的问题。

当 Amazon RDS 弃用某个数据库引擎的次要版本后,我们会在宣布弃用后提供三 (3) 个月的时间,之后再开始自动升级。这一时间结束后,仍在运行已弃用次要版本的所有实例均会安排在计划维护时段内自动升级到受支持的最新次要版本。

当 Amazon RDS 弃用某个数据库引擎的主要版本后,我们会在宣布弃用后提供至少六(6)个月的时间,以便您升级到受支持的主要版本。这一时间结束后,仍在运行已弃用版本的所有实例均会在计划维护时段内自动升级到下一个主要版本。

在某些情况下,我们可能会在未事先通知的情况下弃用特定的主要或次要版本,例如当我们发现某个版本不符合我们的高质量、性能或安全标准的要求时。万一发生此类情况,Amazon RDS 将停止使用这些版本创建新的数据库实例和集群。现有客户可能仍然能够运行他们的数据库。所需时间会因不同的情况而异,具体取决于要解决的问题。

计费

仅按实际使用量收费,无最低费用或设置费用。您的计费依据为:

  • 数据库实例小时数 – 基于使用的数据库实例类(如 db.t2.micro、db.m4.large)。 部分数据库实例使用小时以一秒为增量计费,最低收取 10 分钟的费用,然后提供可计费状态更改(例如创建、启动或修改数据库实例类)。如需了解其他详细信息,请阅读我们的新增功能声明
  • 存储(每月每 GB)– 您的数据库实例预置的存储容量。如果您在一个月内扩展您预置的存储容量,则您的帐单将按比例分配。
  • 每月的 I/O 请求 – 您的存储 I/O 请求总数量(仅限于 Amazon RDS 磁性存储和 Amazon Aurora)
  • 每月的预调配 IOPS – 预调配 IOPS 费率,不论 IOPS 的消耗量如何(仅限于 Amazon RDS 预调配 IOPS(SSD)存储)
  • 备份存储 – 备份存储是指与您的自动数据库备份和任何由客户启动的数据库快照相关的存储。延长备份保留期或增加快照拍摄数量将增加数据库所消耗的备份存储。
  • 数据传输 – 传入和传出数据库实例的 Internet 数据传输

有关 Amazon RDS 定价信息,请访问 Amazon RDS 产品页面的定价部分

数据库实例的账单周期从该数据库实例可用时开始计算。账单周期一直持续到该数据库实例终止之时,删除实例或实例出现故障时会发生终止。

数据库实例小时数是指按您的数据库实例在可用状态下运行的每个小时计费。如果您希望不再为数据库实例付费,则必须将其停止或删除,以免产生更多应计费实例小时数。 部分数据库实例使用小时以一秒为增量计费,最低收取 10 分钟的费用,然后提供可计费状态更改(例如创建、启动或修改数据库实例类)。

当您的数据库实例停止时,您需要为预配置存储 (包括预配置 IOPS) 和备份存储 (包括指定保留时段内的手动快照和自动备份) 付费,但无需为数据库实例小时数付费。

备份存储免费提供,上限为您的账户在整个区域的预配置数据库存储总量。例如,如果您的一个 MySQL 数据库实例在一个月内具有 100 GB 的预配置存储,一个 PostgreSQL 数据库实例在一个月内具有 150 GB 的预配置存储,两者都在同一区域和同一账户中,我们将在此账户和区域中提供 250 GB 的备份存储,不收取额外费用。您只需为超过此数量的备份存储付费。

每天,系统会将您账户在该区域的预配置数据库存储总量与您在该区域的备份存储总量进行比较,并且仅对超出的备份存储收费。例如,如果您每天恰好有 10 GB 的超额备份存储空间,则您将按每月 10 GB 的备份存储收费。或者,如果您每天有 300 GB 的预配置存储和 500 GB 的备份存储,但期限只有半个月,那么您只需按每月 100 GB 的备份存储(而不是每月 200 GB)付费,因为费用是按天计算的(按比例分配),而不是整个月都计算备份。请注意,免费备份存储是特定于账户和特定于区域的。

备份的大小与实例上的数据量成正比。例如,如果您有一个具有 100 GB 预配置存储的数据库实例,但仅在其上存储 5 GB 数据,则您的第一个备份将只有大约 5 GB(而不是 100 GB)。后续备份是增量备份,并且只会将更改的数据存储在您的数据库实例上。请注意,备份存储大小不会显示在 RDS 管理控制台中,也不会显示在 DescribeDBSnapshots API 响应中。

为您的主要数据的数据库实例预置的存储位于单一可用区内。备份数据库时,将在多个可用区之间冗余地复制备份数据(包括事务日志),以提供更高级别的数据持久性。超出免费分配之外的备份存储定价体现了关键备份的持久性最大化所需的超级复制操作。

如果您指定数据库实例为多可用区部署,系统将根据 Amazon RDS 定价页面上发布的多可用区定价计费。多可用区的计费依据为:

  • 多可用区数据库实例小时数 – 基于使用的数据库实例类(如 db.t2.micro、db.m4.large)。如同单可用区中的标准部署那样,部分数据库实例使用小时以一秒为增量计费,最低收取 10 分钟的费用,然后提供可计费状态更改(例如创建、启动或修改数据库实例类)。如果在给定小时内数据库实例部署在标准和多可用区模式之间发生转换,将按该小时适用的费用收费。
  • 预置存储 (针对多可用区部署实例) – 如果在给定小时内数据库实例部署在标准和多可用区模式之间发生转换,将按该小时适用存储费用的较高者收费。
  • 每月的 I/O 请求数 – 您拥有的存储 I/O 请求总数。多可用区部署耗用的 I/O 请求量高于标准数据库实例部署,具体取决于数据库的写入/读取比率。当 Amazon RDS 将数据同步复制到备用数据库实例时,与数据库更新相关联的写入 I/O 使用量将加倍。读取 I/O 使用量保持不变。
  • 备份存储 – 无论您的数据库实例是标准部署还是多可用区部署,备份存储使用量都保持不变。备份将轻松地从备用实例进行,以避免主数据库实例上的 I/O 暂停。
  • 数据传输 – 在主实例和备用实例之间复制数据不会收取数据传输费用。传入和传出数据库实例的 Internet 数据传输费用与标准部署的费用相同。

除非另行说明,否则我们的价格不包含适用的税费和关税(包括增值税和适用销售税)。使用日本账单地址的客户若要使用 AWS,则需缴纳日本消费税。 了解更多

免费套餐

适用于 Amazon RDS 的 AWS Free Tier 中包括免费使用运行 MySQL、MariaDB、PostgreSQL 和 SQL Server Express Edition 的单可用区微型数据库实例。免费使用套餐每月提供多达 750 小时的实例小时数。客户每月还可以免费获得 20GB 的通用型 (SSD) 数据库存储和 20GB 的备份存储。

AWS 新账户可以获得 AWS Free Tier 长达 12 个月的使用权。有关更多信息,请参阅 AWS Free Tier 常见问题

符合。您可同步运行多个单可用区微型数据库实例,并且可以将使用量计入适用于 Amazon RDS 的 AWS 免费套餐中。但是,任何超过 750 实例小时的用量,包括所有 Amazon RDS 单一可用区微型数据库实例、所有适用的数据库引擎和区域,均按标准的 Amazon RDS 价格计费。

例如:如果您将两个单可用区微型数据库实例在一个月内各运行了 400 个小时,您将累计使用实例 800 小时,其中的 750 小时是免费的。剩下的 50 个小时将按标准的 Amazon RDS 价格计费。

不可以,享受 AWS Free Tier 的客户最多可使用 750 个小时的微型实例,无论实例运行的是 MySQL、PostgreSQL 还是 SQL Server Express Edition。任何超过 750 实例小时的用量,包括所有 Amazon RDS 单可用区微型数据库实例、所有符合条件的数据库引擎和区域,均按标准的 Amazon RDS 价格计费。

对于超出免费套餐所提供的实例小时数,将按标准的 Amazon RDS 价格计费。有关详细信息,请参阅 Amazon RDS 定价页面

预留实例

借助 Amazon RDS 预留实例,您可以将数据库实例预留一年或三年,并借此获得与该数据库实例的按需型实例定价相比而言更大的折扣。RI 有三种付款选项 – 不预付、部分预付、全额预付 – 您可以通过这三种选项平衡您的预付款金额与有效小时价格。

预留实例和按需数据库实例在功能上是完全相同的。唯一区别是数据库实例的计费方式。对于预留实例,您可以购买一年期或三年期预留,作为回报,您将在预留期限内享受较低的每小时有效使用费率(相对于按需型数据库实例)。除非您在一个地区购买预留实例,否则所有数据库实例都将根据按需小时费率计费。

您可以在 AWS 管理控制台中 Amazon RDS 的“预留实例”部分购买预留实例。另外,您还可以使用 Amazon RDS API 或 AWS 命令行界面列出可供购买的预留,然后购买数据库实例预留。

购买预留实例之后,预留数据库实例与按需数据库实例的使用方式相同。您可以使用您预留的实例类、引擎和区域启动数据库实例。只要激活您购买的预留,Amazon RDS 即会对您符合资格的新数据库实例应用折扣后的每小时费率。

Amazon RDS 预留实例针对区域而非某个特定的可用区出售。由于 RI 并非特定于某个可用区,因此不包括容量预留。这意味着即使某个可用区的容量有限,您仍然可以在该地区内购买预留实例,且折扣将适用于该地区内所有可用区的匹配使用量。

您最多可以购买 40 个预留数据库实例。如果要运行 40 个以上数据库实例,请填写 Amazon RDS 数据库实例申请表

只需在您目前正在运行且希望预留的数据库实例所在的区域内购买属于相同数据库实例类,且具有相同数据库引擎、多可用区选项和许可模式的数据库实例预留即可。成功购买预留后,Amazon RDS 将自动对您现有的数据库实例应用新的小时使用费用。

收到您的请求及处理付款授权后,系统将会激活与预留实例相关联的定价变更。您可以在“AWS 账户活动”页面或使用 DescribeReservedDBInstances API 或 describe-reserved-db-instances 命令跟踪预留的状态。如果在下一账单周期前未成功授权一次性付款,折扣价格则不会生效。

预留期限到期后,您的预留实例将恢复为该数据库实例类和区域相应的按需小时费率。

对于按需型实例和预留实例,它们与创建、修改和删除数据库实例相关的 Amazon RDS 操作均相同。计算账单时,我们的系统将自动应用您的预留,即所有符合条件的数据库实例都将按较低的预留数据库实例每小时费率收费。

每个预留都会关联以下一组属性:数据库引擎、数据库实例类、多可用区部署选项、许可模式和区域。

具有大小灵活性的数据库引擎和许可模式(MySQL、MariaDB、PostgreSQL、Amazon Aurora 或 Oracle“自带许可”)的预留会自动应用于同一数据库引擎和区域的同一实例系列(例如 M4、T2 或 R3)内正在运行的、任意大小的数据库实例。另外,预留也会自动应用于采用单可用区部署或多可用区部署的数据库实例。

举例来说,假设您购买了一个 db.m4.2xlarge MySQL 预留。如果您决定将运行的数据库实例扩展为 db.m4.4xlarge,则 RI 的折扣费率会应用到较大的数据库实例的 1/2 的使用量。

如果您采用的数据库引擎或许可模式不具有大小灵活性(Microsoft SQL Server 或 Oracle“已包含许可证”),那么在预留期限内,每个预留只能应用到具有相同属性的数据库实例。如果您要在预留期限结束前修改正在运行的数据库实例的任何属性,那么该数据库实例的小时使用费率将恢复为按需小时费率。

有关大小灵活性的更多详细信息,请参阅 Amazon RDS 用户指南

每个预留实例都与特定的区域关联,并且在预留实例生命周期内固定不变,因此无法更改区域。不过,每个预留在关联区域的任何可用区都可用。

符合。当您购买预留实例时,您可以在可用购买的数据库实例配置中选择多可用区选项。此外,如果您使用支持预留实例大小灵活性的数据库引擎和许可模式,则一个多可用区预留实例将涵盖两个单可用区数据库实例的使用费用。

如果数据库实例类和区域相同,那么数据库实例预留可以应用于只读副本。计算账单时,我们的系统将自动应用您的预留,即所有符合条件的数据库实例都将按较低的预留数据库实例小时费用收费。

不能,您无法取消预留数据库实例,而且一次性付款(如果适用)也不可退款。无论您使用多少容量,在预留数据库实例有效期内都必须继续支付小时费率。

当您按照全额预付款选项购买 RI 时,您需要用一次性预付付款方式为 RI 的整个期限付款。您可以通过选择不预付选项,不支付任何预付费用。不预付 RI 的整体价值覆盖实例期限中的每个小时,您将为该期限内的每个小时付费,无论使用情况如何。部分预付款选项是全额预付款和不预付选择的混合。进行小额预付款后,您将按较低的小时费率为实例期限内的每个小时付费,无论使用情况如何。

硬件和扩展

选择初始数据库实例类和存储容量,您可能需要评测应用程序的计算、内存和存储需求。有关可用数据库实例类的信息,请参阅 Amazon RDS 用户指南

您可以使用 AWS 管理控制台(选择所需的数据库实例并单击“修改”按钮)、Amazon RDS API 或 AWS 命令行界面扩展为数据库实例分配的计算资源和存储容量。内存和 CPU 资源可通过更改数据库实例类进行修改,可用存储可在修改存储分配时进行更改。 

请注意,修改数据库实例类或分配的存储后,将在指定的维护时段中应用您请求的更改。此外,您可以使用“apply-immediately”标记立即应用扩展请求。请注意,任何其他待定的系统更改也将同时应用。

一些较早的 RDS for SQL Server 实例可能不符合条件,无法使用扩展存储。有关更多信息,请参阅 RDS for SQL Server 常见问题

Amazon RDS 的数据库和日志存储采用 EBS 卷。根据所请求存储的容量,Amazon RDS 自动将多个 EBS 卷分成条状以增强 IOPS 性能。对于 MySQL 和 Oracle 中现有的数据库实例,在扩展存储时,您可以看到部分 I/O 容量有所改进。您可以使用 AWS 管理控制台、ModifyDBInstance API 或 modify-db-instance 命令扩展为数据库实例分配的存储容量。

有关更多信息,请参阅适用于 Amazon RDS 的存储

在保持数据库实例可用的同时,可以增加为数据库实例分配的存储容量。不过,在决定扩展或缩减数据库实例的可用计算资源时,您的数据库将暂时不可用,同时数据库实例类将发生变化。这段不可用时间通常仅会持续几分钟,将在数据库实例的维护时段出现,除非您指定了立即应用修改。

Amazon RDS 支持各种数据库实例类和存储分配以满足不同的应用程序需求。如果您的应用程序所需的计算资源超过最大数据库实例类或所需存储超过最大分配量,您可以执行分区,将数据分布到多个数据库实例中。

Amazon RDS 通用型(SSD)存储适用于拥有适度 I/O 请求的广泛数据库工作负载。凭借 3 IOPS/GB 的基准以及激增至 3000 IOPS 的能力,此存储方案将提供可预测的性能,以满足大多数应用程序的需求。

Amazon RDS 预调配 IOPS(SSD)存储是支持 SSD 的存储方案,旨在提供快速、可预测且一致的 I/O 性能。凭借 Amazon RDS 预调配 IOPS(SSD)存储,您可以在创建数据库实例时指定 IOPS 速率,而 Amazon RDS 可以为数据库实例的生命周期预置 IOPS 速率。Amazon RDS 预调配 IOPS(SSD)存储经过优化,适合 I/O 密集型、事务处理型(OLTP)数据库工作负载。有关更多详细信息,请参阅 Amazon RDS 用户指南

Amazon RDS 磁性存储适用于数据访问频率较低的小型数据库工作负载。对于生产数据库实例,不建议使用磁性存储。

选择最适合您工作负载的存储类型。

  • 高性能 OLTP 工作负载:Amazon RDS 预调配 IOPS(SSD)存储
  • 具有适度 I/O 要求的数据库工作负载:Amazon RDS 通用型 (SSD) 存储

Amazon RDS 支持的 IOPS 数量取决于数据库引擎。有关更多详细信息,请参阅 Amazon RDS 用户指南

自动备份和数据库快照

Amazon RDS 提供了两种备份和还原数据库实例自动备份数据库快照的不同方法。

通过 Amazon RDS 的自动备份功能,可以实现数据库实例的时间点恢复。为数据库实例打开自动备份功能时,Amazon RDS 将自动对数据执行全天快照(在首选的备份时段期间)并捕获事务日志(如果对数据库实例进行了更新)。启动时间点恢复时,事务日志将应用到最合适的每日备份,以便将数据库实例还原到您请求的特定时间。 

Amazon RDS 可在用户指定的有限时间段(称为“保留期”,默认情况下是 7 天,但最长可以设置为 35 天)内保留数据库实例备份。在保留期内,您可以启动时间点还原并指定任何秒数,最多为最近可还原时间。您可以使用 DescribeDBInstances API 以使其返回数据库实例的最近可还原时间,通常在最后五分钟以内。 

此外,您可以在 AWS 管理控制台中选择数据库实例,并查看控制台下侧面板的“描述”选项卡,了解该数据库实例的最近可还原时间。

数据库快照由用户启动,可让您按所需的任意频率在已知状态备份数据库实例,然后随时还原到这种特定的状态。您可以使用 AWS 管理控制台、CreateDBSnapshot API 或 create-db-snapshot 命令创建数据库快照,这些快照会一直保留,直到您显式将其删除。

您可以使用 Amazon RDS 为实现自动备份而创建的快照来进行复制(使用 AWS 管理控制台或 copy-db-snapshot 命令)或用于快照还原功能。您可以使用“自动”快照类型来确定它们。此外,您可以查看“快照创建时间”字段来确定拍摄快照的时间。 

另外,“自动”快照的标识符中也包含快照拍摄的时间 (UTC 形式)。

请注意:执行还原到某个时间点操作或从数据库快照执行还原操作时,将使用新的终端节点创建一个新数据库实例(如果需要,可以删除旧数据库实例)。这样,您便可以从特定数据库快照或时间点创建多个数据库实例。

默认情况下,Amazon RDS 可以在 7 天的保留期内自动进行数据库实例备份。如果您希望修改备份保留期,可以使用 RDS 管理控制台或 CreateDBInstance API(创建新数据库实例时)或 ModifyDBInstance API(对于现有的实例)执行操作。您可以使用这些方法来将 RetentionPeriod 参数更改为从 0 开始的任何数字(这将禁用自动备份)再到所需的天数(最多 35 天)。如果数据库实例为只读副本的来源,则无法将该值设置为 0。有关自动备份的更多信息,请参阅 Amazon RDS 用户指南

首选备份时段是用户定义的时间段,在该时间段内数据库实例将进行备份。Amazon RDS 借助这些定期数据备份以及事务日志,让您能够将数据库实例还原到保留期内的任何秒数,最多到 LatestRestorableTime(通常位于最后五分钟内)。在备份时段中,存储 I/O 可能会在备份过程初始化时暂停(通常短于几秒),同时延迟可能会短暂性增加。由于备份在备用机上进行,因此对于多可用区数据库部署,不会出现 I/O 暂停。

Amazon RDS 数据库快照和自动备份存储在 S3 中。

您可以使用 AWS 管理控制台、ModifyDBInstance API 或 modify-db-instance 命令,通过修改 RetentionPeriod 参数来管理自动备份的保留时间段。如果希望关闭自动备份,则可以通过将保留期设置为 0 (不建议) 来执行该操作。您可以通过 Amazon RDS 控制台的“快照”部分管理用户创建的数据库快照。另外,您还可以使用 DescribeDBSnapshots API 或 describe-db-snapshots 命令查看用户针对指定数据库实例创建的数据库快照列表,并可以使用 DeleteDBSnapshot APIdelete-db-snapshot 命令删除快照。

如果您的自动数据库快照数量比保留期间的天数多出一两个,这属于正常情况。系统会额外保留一个自动快照,以确保能够执行到保留期内任何时间的时间点恢复。

例如,如果您的备份时段设置为 1 天,您将需要 2 个自动快照才能支持到过去 24 小时内任何时间的恢复。此外,由于新的自动快照通常在旧的自动快照删除之前创建完成,您可能会看到一个额外的自动快照。

删除数据库实例时,您可以在删除前创建一个最终数据库快照;这样的话,您就可以在将来利用此数据库快照恢复已删除的数据库实例。在删除数据库实例后,Amazon RDS 会将这个用户创建的最终数据库快照与所有其他人工创建的数据库快照一起保留。请参阅定价页面,了解备份存储成本的详细信息。

删除数据库实例时,您可以保留自动备份,直至备份保留期。有关更多信息,请参阅保留自动备份

安全性

Amazon VPC 允许您在 AWS Cloud 中私有、隔离的部分创建虚拟网络环境,从中可以对私有 IP 地址范围、子网、路由表和网络网关等方面进行全面控制。借助 Amazon VPC,您可以定义虚拟网络拓扑和自定义网络配置,使其非常类似于您在自己的数据中心所操作的传统 IP 网络。

使用 VPC 的一个好处在于:您可以运行面向公众的 Web 应用程序,同时仍旧在私有子网中保持非公开访问的后端服务器。您可以为 Web 服务器创建一个可以访问 Internet 的公有子网,并将后端 Amazon RDS 数据库实例置于不能访问 Internet 的私有子网中。有关 Amazon VPC 的更多信息,请参阅 Amazon Virtual Private Cloud 用户指南

如果您的 AWS 账户是在 2013 年 12 月 4 日之前创建的,那么您或许可以在 Amazon Elastic Compute Cloud(EC2)-Classic 环境中运行 Amazon RDS。无论使用 EC2-Classic 还是 EC2-VPC,Amazon RDS 的基本功能完全相同。无论数据库实例部署在 VPC 内部还是外部,Amazon RDS 都能管理备份、软件补丁、自动故障检测、只读副本和恢复。想要了解 EC2-Classic 和 EC2-VPC 的更多区别,请参阅 EC2 文档

数据库子网组是您希望为 VPC 中的 Amazon RDS 数据库实例委派的子网集合。每个数据库子网组都应在指定区域中的每个可用区内拥有至少一个子网。在 VPC 中创建数据库实例时,您需要选择一个数据库子网组。然后,Amazon RDS 使用该数据库子网组和您首选的可用区来选择子网以及该子网内的 IP 地址。Amazon RDS 创建弹性网络接口,并通过该 IP 地址将其关联到您的数据库实例。

请注意,我们强烈建议您使用 DNS 名称来连接数据库实例,因为基础 IP 地址可能会变化(例如,在失效转移时)。

对于多可用区部署,为一个区域内的所有可用区定义子网可允许 Amazon RDS 在需要时在其他可用区中创建新的备用实例。即使是单一可用区域部署,您也需要这样做,以防以后需要将它们转换为多可用区域部署。

有关引导您完成此流程的程序,请参阅 Amazon RDS 用户指南中的在 VPC 中创建数据库实例

请访问 Amazon RDS 用户指南的安全组部分,了解各种不同的数据库实例访问权限管理方法。

通过 VPC 内部署的 EC2 实例可以访问同一 VPC 内部署的数据库实例。如果这些 EC2 实例部署在具有关联弹性 IP 的公共子网中,您可以通过 Internet 访问 EC2 实例。对于 VPC 内部署的数据库实例,可通过 VPN 或您在公有子网中可以启动的堡垒主机,或使用 Amazon RDS 可公开访问选项通过 Internet 或从 VPC 外部的 EC2 实例进行访问:

  • 要使用堡垒主机,您需要设置一个包含用作 SSH 堡垒机的 EC2 实例的公开子网。该公有子网的互联网网关和路由规则必须允许通过 SSH 主机引导流量,然后必须将请求转发到 Amazon RDS 数据库实例的私有 IP 地址。
  • 简单创建数据库实例,并将“Publicly Accessible”(可公开访问)选项设定为“Yes”(是),即可使用公共连接。默认情况下,当“可公开访问”选项可用时,从您的 VPC 外部可实现对 VPC 内数据库实例的完全访问。这表示您无需配置 VPN 或堡垒主机来允许访问您的实例。

您也可以设置一个 VPN 网关,将公司网络扩展到 VPC,然后允许访问该 VPC 中的 Amazon RDS 数据库实例。有关更多详细信息,请参阅 Amazon VPC 用户指南

我们强烈建议您使用 DNS 名称来连接数据库实例,因为基础 IP 地址可能会发生变化 (例如,在故障转移时)。

如果数据库实例未在 VPC 中,您可以使用 AWS 管理控制台轻松将数据库实例移至 VPC 中。有关更多详细信息,请参阅 Amazon RDS 用户指南。您还可以对 VPC 外部的数据库实例拍摄快照,然后通过指定您要使用的数据库子网组,将其还原到 VPC。此外,您也可以执行“还原到时间点”操作。

不支持将数据库实例从 VPC 内部迁移到外部。出于安全考虑,无法将 VPC 内数据库实例的数据库快照还原到 VPC 外部。同样,也无法执行“还原到时间点”功能。 

您需要负责修改 VPC 中的路由表网络 ACL,以确保能够从 VPC 中的客户端实例访问您的数据库实例。 对于多可用区部署,在失效转移后,您的客户端 EC2 实例和 Amazon RDS 数据库实例可能位于不同的可用区。您需要配置网络 ACL,以确保能够跨可用区进行通信。

现有的数据库子网组可以进行更新,以便为现有的可用区或为创建数据库实例时添加的新可用区添加更多子网。 如果实例在特定可用区中运行,而该可用区已经从子网组中删除,则从现有数据库子网组中删除子网可能导致实例不可用。有关更多信息,请参阅 Amazon RDS 用户指南

开始使用 Amazon RDS 时,您需要有 AWS 开发人员账户。如果在注册 Amazon RDS 前没有 AWS 开发人员账户,系统将会提示您创建一个,再开始注册过程。主用户账户与 AWS 开发人员账户不同,它仅在 Amazon RDS 环境内使用,用来控制对您的数据库实例的访问。主用户账户是本机数据库用户账户,可用来连接数据库实例。 

在创建数据库实例时,您可以指定与每个数据库实例相关联的主用户账户和密码。创建数据库实例后,您可以使用主用户证书连接到数据库。之后,您也可以创建其他用户账户,以便限制谁能访问您的数据库实例。

对于 MySQL,主用户的默认特权包括:创建、退出、引用、事件、更改、删除、索引、插入、选择、更新、创建临时表、锁定表、触发、创建视图、显示视图、更改例程、创建例程、执行、触发、创建用户、处理、显示数据库、授予选项。

对于 Oracle,主用户将被授予“dba”角色。主用户将继承与该角色相关联的大部分特权。有关限制的特权以及执行需要这些特权的管理任务时相应的替代项列表,请参阅 Amazon RDS 用户指南

对于 SQL Server,创建数据库的用户将被授予“db_owner”角色。有关限制的特权以及执行需要这些特权的管理任务时相应的替代项列表,请参阅 Amazon RDS 用户指南

没有。一切都与您自己管理关系数据库时使用的熟悉方式相同。

符合。您必须通过配置安全组专门打开通过 Internet 访问数据库的功能。您只能对特定 IP、IP 范围或自己数据中心服务器所对应的子网授予访问权限。

可以,所有 Amazon RDS 引擎都支持此选项。 Amazon RDS 会为每个数据库实例生成一个 SSL/TLS 证书。建立加密连接后,在传输时将对数据库实例和应用程序之间传输的数据进行加密。

虽然 SSL 有安全优势,但应注意 SSL/TLS 加密操作需使用大量计算操作,可能会加大数据库连接延迟。Amazon RDS 中的 SSL/TLS 支持用来对应用程序和数据库实例之间的连接加密;不应依赖于数据库实例本身的身份验证。

有关与 Amazon RDS 建立加密连接的详细信息,请访问 Amazon RDS 的 MySQL 用户指南MariaDB 用户指南PostgreSQL 用户指南Oracle 用户指南。要了解有关 SSL/TLS 如何与这些引擎协作的更多信息,您可以直接参考 MySQL 文档MariaDB 文档MSDN SQL Server 文档PostgreSQL 文档Oracle 文档

Amazon RDS 使用您通过 AWS Key Management Service (KMS) 管理的密钥来支持所有数据库引擎的静态加密。在通过 Amazon RDS 加密运行的数据库实例上,静态存储于底层存储的数据都将加密,自动备份、只读副本和快照也是如此。加密和解密操作的处理都是透明的。有关将 KMS 与 Amazon RDS 一起使用的更多信息,请参阅 Amazon RDS 用户指南

您还可以对之前未加密的数据库实例或数据库集群进行加密,具体方法是创建数据库快照,然后创建此快照的副本并指定 KMS 加密密钥。之后,您就可从加密的快照还原加密的数据库实例或数据库集群。

Amazon RDS for Oracle 和 Amazon RDS for SQL Server 支持这些引擎的透明数据加密(TDE)技术。有关更多信息,请参阅 Amazon RDS 用户指南中有关 OracleSQL Server 的部分。

您可以控制您的 AWS IAM 用户和组在 Amazon RDS 资源上可执行的操作。您可以通过以下方法实现此目的:在您应用到用户和组的 AWS IAM 策略中引用 Amazon RDS 资源。可在 AWS IAM policy 中引用的 Amazon RDS 资源包括:数据库实例、数据库快照、只读副本、数据库安全组、数据库选项组、数据库参数组、事件订阅以及数据库子网组。 

此外,您还可以为这些资源添加标签,以便在资源中添加额外的元数据。通过添加标记,您可以对资源进行分类(例如,“开发”数据库实例、“生产”数据库实例、“测试”数据库实例,等等),然后编写 AWS IAM 策略,规定对于具有相同标记的资源可以执行哪些权限(即操作)。有关更多信息,请参阅标记 Amazon RDS 资源

可以。 AWS CloudTrail 是一项 Web 服务,为您的账户记录 AWS API 调用并为您提供日志文件。由 CloudTrail 生成的 AWS API 调用历史记录可用于安全分析、资源变更追踪以及合规性审计。 

可以,所有 Amazon RDS 数据库引擎均符合 HIPAA 要求,因此您可以基于与 AWS 签署的《业务合作协议》(BAA),使用它们构建 HIPAA 合规应用程序并存储医疗保健相关信息(包括受保护的健康信息 [PHI])。

如果您已经有履行的 BAA,可以即刻开始在 BAA 涵盖的账户内使用这些服务。如果您尚未与 AWS 签署有效的 BAA,或者对于 AWS 上符合 HIPAA 要求的应用程序还有其他疑问,请联系您的客户经理。

数据库配置

默认情况下,Amazon RDS 会考虑实例类和存储容量,为数据库实例选择最优配置参数。但是,如果要进行更改,您可以使用 AWS 管理控制台、Amazon RDS API 或 AWS 命令行界面执行此操作。请注意,将配置参数改为非建议的值可能会产生从性能降低到系统崩溃等各种意外影响,只有愿意承担此类风险的高级用户才可以尝试该操作。

数据库参数组就像是引擎配置值的“容器”,这些值可应用于一个或多个数据库实例。如果创建的数据库实例未指定数据库参数组,将使用默认的数据库参数组。该默认组包含针对您运行的数据库实例进行优化的引擎默认值和 Amazon RDS 系统默认值。

不过,如果希望数据库实例以您自定义的引擎配置值运行,可以轻松地创建一个新数据库参数组,修改所需的参数并修改数据库实例以使用新数据库参数组。建立关联后,使用特定数据库参数组的所有数据库实例都将获得该数据库参数组的所有参数更新。

有关配置数据库参数组的更多信息,请参阅 Amazon RDS 用户指南

您可以使用 AWS Config 持续记录以下项的配置更改,并通过 Amazon Simple Notification Service (SNS) 接收更改通知:Amazon RDS 数据库实例、数据库子网组、数据库快照、数据库安全组和事件订阅。您还可以创建 AWS Config 规则来评估这些 Amazon RDS 资源是否具有所需的配置。

多可用区部署

创建或修改数据库实例并以多可用区部署模式运行后,Amazon RDS 将自动在不同的可用区预置和维护同步“备用”副本。对数据库实例的更新将同步复制到可用区的备用副本中,以保持同步并保护最新的数据库更新,以防数据库实例出现故障。 

如果遇到特定类型的计划内维护或很少出现的数据库实例故障或可用区故障,Amazon RDS 将自动故障转移到备用副本,以便在提升备用副本后尽快恢复数据库写入和读取操作。由于数据库实例的名称记录相同,所以应用程序无需手动管理干预即可恢复数据库操作。借助多可用区部署,您可以透明地进行复制。无需与备用副本交互,而且它不可用来服务读取流量。有关多可用区部署的更多信息,请参阅 Amazon RDS 用户指南

可用区是区域内的不同位置,旨在隔离其他可用区的故障。每个可用区在其独立的、物理上显著不同的基础设施中运行,具有高度可靠性。可用区之间不共用像发电机和冷却设备那样的常见故障点。此外,它们在物理上也是相互独立的,即使火灾、龙卷风或洪涝等极为罕见的灾难也只会影响单个可用区。同一区域内的可用区之间具有低延迟的网络连接。

以多可用区部署模式运行数据库实例时,“主”副本服务于数据库写入和读取操作。此外,Amazon RDS 会在场景后预配置和维护“备用”副本,它是主副本的最新副本。在故障转移情况下,会“提升”备用副本。故障转移后,备用副本将成为主副本,并接受数据库操作。在提升前的任何时候,无需与备用副本直接交互(例如,执行读取操作)。如果您有兴趣扩展读取流量,以突破单个数据库实例的流量限制,请参阅关于只读副本的常见问题。

以多可用区部署模式运行数据库实例的主要优势是可提高数据库的持久性和可用性。多可用区部署提供了增强的可用性和容错功能,这使其自然而然成为生产环境的理想之选。
 

在遇到罕见的数据库实例组件故障或某个可用区的可用性受损的情况时,以多可用区部署模式运行数据库实例可确保数据安全无虞。例如,如果主副本中的存储卷出现故障,Amazon RDS 将自动启动故障转移到备用副本,在此您的所有数据库更新完整无缺。相对于单一可用区域的标准部署,这种方式提供更长的数据持久性,否则将需要用户启动还原操作且最近可还原时间 (通常在最后五分钟内) 之后进行的更新将不可用。

此外,以多可用区部署模式运行时,您还可获得增强数据库可用性的优势。如果发生可用区故障或数据库实例故障,可用性影响将仅限于完成自动故障转移的时间。多可用区部署的可用性优势还可延伸到计划内维护。

例如,对于自动备份,由于从备用副本进行备份,所以在首选的备份窗口期间不会再暂停主副本中的 I/O 活动。至于打补丁或数据库实例类扩展,这些操作在自动故障转移前会首先在备用副本上执行。因此,可用性影响将仅限于完成自动故障转移的时间。

以多可用区部署模式运行数据库实例的另一潜在优势是,系统将自动执行数据库实例故障转移,无需进行管理。在 Amazon RDS 环境中,这意味着出现可用区故障或数据库实例故障时,无需监控数据库实例事件及启动手动数据库实例恢复 (通过 RestoreDBInstanceToPointInTime 或 RestoreDBInstanceFromSnapshot API)。

您可以看到,由于是代您执行同步数据复制,所以相对于单一可用区中的标准数据库实例部署,延迟有所提升。

不能,多可用区备用副本不能服务读取请求。多可用区部署旨在增强数据库可用性和持久性,而非获得读取扩展优势。因此,该功能在主副本和备用副本之间采用同步复制。我们的实施可确保主副本和备用副本一直处于同步状态,但不能使用备用副本执行读取或写入操作。如果您对读取扩展解决方案感兴趣,请参阅关于只读副本的常见问题。

要创建多可用区数据库实例部署,只需在使用 AWS 管理控制台启动数据库实例时,单击“多可用区部署”的“是”选项。

另外,如果您使用的是 Amazon RDS API,则可调用 CreateDBInstance API 并将“多可用区”参数的值设置为“true”。 要将现有的标准(单一可用区)数据库实例转换为多可用区,请在 AWS 管理控制台中修改数据库实例,或使用 ModifyDBInstance API 并将“多可用区”参数的值设置为“是”。

对于 RDS for PostgreSQLRDS for MySQLRDS for MariaDBRDS for SQL ServerRDS for OracleRDS for Db2 数据库引擎,当您选择将Amazon RDS 实例从单可用区转换为多可用区时,会发生以下情况:

  • 已拍摄主实例的快照。
  • 在不同的可用区,从该快照创建新的备用实例。
  • 在主实例和备用实例之间配置同步复制。

 

因此,在实例从单可用区转换为多可用区时,不会出现停机时间。不过,当备用实例在捕获数据以赶上主实例时,您可能会看到延迟增加。

Amazon RDS 可检测多可用区部署中最常见的故障并自动从中恢复过来,这样您可在无管理干预的情况下尽快恢复数据库操作。如果发生以下任何一种情况,Amazon RDS 将自动执行故障转移:

  • 主可用区域的可用性受损
  • 主区域的网络连接受损
  • 主区域的计算设备出现故障
  • 主区域的存储故障

注意:为了获得更强的可用性,对多可用区部署启动诸如数据库实例扩展或系统升级之类的操作时,如操作系统安装补丁程序,这些操作首先会应用于备用,之后才自动进行故障转移。因此,可用性仅会在执行自动故障转移的时段内受到影响。请注意,Amazon RDS Multi-AZ 部署不会自动转移来响应某些数据库操作,如长时间运行查询、死锁或数据库崩溃错误。

会,Amazon RDS 将发出数据库实例事件,以通知您系统已执行自动失效转移。您可以单击 Amazon RDS 控制台的“事件”部分或使用 DescribeEvents API 返回数据库实例相关事件的相关信息。发生特定数据库事件时,您还可以通过 Amazon RDS 事件通知获取通知。

Amazon RDS 将自动进行失效转移,以便尽快恢复数据库操作而无需管理干预。故障转移后,Amazon RDS 会轻松翻转数据库实例的别名记录 (CNAME) 以指向备用副本,备用副本继而被提升为新的主副本。我们鼓励您遵循最佳做法,在应用程序层实施数据库连接重试。

故障转移(即从在主副本上检测到故障到在备用副本上继续事务之间的时间)通常在一至两分钟内完成。故障转移时间也会受是否必须还原大型未提交事务这一因素的影响;为获得最佳效果,建议对多可用区使用足够大的实例类型。AWS 还建议对多可用区域实例使用预置 IOPS,以获得快速、可预测及一致的吞吐量性能。

在各种故障条件下,Amazon RDS 会自动进行失效转移,无需用户操作。此外,Amazon RDS 会在重新引导实例时提供启动故障转移的选项。您可以通过 AWS 管理控制台或调用 RebootDBInstance API 来访问此功能。

对于多可用区部署,可以轻松地将“多可用区”参数设置为“是”。创建备用副本、同步复制和故障转移都将自动进行处理。这意味着,无法选择部署备用副本的可用区或更改可用的备用副本数(Amazon RDS 会为每个数据库实例主副本预置一个专用的备用副本)。备用副本也不可以配置为接受数据库读取活动。 了解关于多可用区配置的更多信息。

符合。备用副本将自动预置到与数据库实例主副本所在区域的不同可用区。

是的,您可以使用 AWS 管理控制台或 DescribeDBInstances API 查看当前主副本的位置。

可用区与同一区域内的其他可用区之间可以实现低延迟网络连接。此外,您可能会考虑以跨多个可用区域的冗余架构应用程序及其他 AWS 资源,以便在出现可用区域故障时应用程序能够灵活反应。多可用区域部署可满足数据库层的此项需求,而无需用户干预管理。

您可以按照在单一可用区或多可用区部署中运行标准部署的相同方式与自动备份和数据库快照功能交互。如果您正在运行多可用区部署,将自动从备用副本执行自动备份和数据库快照,以免主副本中的 I/O 暂停。请注意,在备份单一可用区域和多可用区域部署时,您可能会经历更长时间的 I/O 延迟 (一般持续几分钟)。

多可用区部署与标准、单一可用区部署的还原操作启动方式也完全相同(时间点还原或从数据库快照还原)。您可以使用 RestoreDBInstanceFromSnapshot 或 RestoreDBInstanceToPointInTime API 创建新数据库实例部署。无论在标准部署还是多可用区部署中启动源备份,这些新数据库实例部署都可能是标准或多可用区模式。

只读副本

借助只读副本,用户能够更轻松地利用受支持引擎的内置复制功能灵活横向扩展并超越单一数据库实例的容量限制,以处理大量读取数据库工作负载。

在 AWS 管理控制台中单击几下鼠标或使用 CreateDBInstanceReadReplica API 即可创建只读副本。创建只读副本后,将使用受支持引擎的本机异步复制功能复制源数据库实例的数据库更新信息。您可以为给定的源数据库实例创建多个只读副本,并在它们当中分配应用程序的读取流量。

由于只读副本利用受支持引擎的内置复制功能,所以它们各有优势和局限。特别是,对源数据库实例进行更新后,更新将应用到只读副本,但复制滞后性可能会有很大差别。只读副本可以与多可用区部署关联,从而获得读取扩展优势,同时实现多可用区部署提供的增强的数据库写入可用性和数据持久性。

在很多情况下,为给定的源数据库实例部署一个或多个只读副本可能比较明智。部署只读副本的常见原因包括:

  • 扩展单个数据库实例的计算资源或 I/O 容量,用于执行大量读取数据库工作负载。这样,过多的读取流量将被引导至一个或多个读取副本。
  • 当源数据库实例不可用时,为读取流量提供服务。如果您的源数据库实例无法处理 I/O 请求(例如,由于备份或计划维护而暂停 I/O),可以将读取流量引导到只读副本。对于这种使用案例,请注意由于源数据库实例不可用,因而只读副本中的数据可能处于“静态”。
  • 业务报告或数据仓库场景。您可能想针对只读副本而非主生产数据库实例执行业务报告查询。
  • 您可以将只读副本用于相同 AWS 区域或其他区域中源数据库实例的灾难恢复。

符合。将备份保留时间设置为 0 以外的任何值,以此在添加只读副本之前启用源数据库实例的自动备份。要使只读副本能够运行,必须保持备份的启用状态。

Amazon Aurora:所有数据库集群。

Amazon RDS for MySQL:所有数据库实例都支持创建只读副本。必须在源数据库实例上启用自动备份并使其保持启用状态,才能进行只读副本的操作。只有运行 MySQL 5.6 及更高版本(而非 5.5)的 Amazon RDS 只读副本支持自动备份。

Amazon RDS for PostgreSQL:运行 PostgreSQL 版本 9.3.5 或更高版本的数据库实例支持创建只读副本。要利用 Amazon RDS 只读副本,版本 9.3.5 前的现有 PostgreSQL 实例需要升级到 PostgreSQL 版本 9.3.5。

Amazon RDS for MariaDB:所有数据库实例都支持创建只读副本。必须在源数据库实例上启用自动备份并使其保持启用状态,才能进行只读副本的操作。

Amazon RDS for Oracle:支持 Oracle 版本 12.1.0.2.v12 及更高版本,以及所有使用 Oracle Database Enterprise Edition 自带许可模式,并已获得 Active Data Guard Option 许可的 12.2 版本。

Amazon RDS for SQL Server:当基础复制技术针对 SQL Server 2016 和 2017 版使用 Always On 可用性组时,多可用区配置中的 Enterprise Edition 支持只读副本。

只需使用标准 CreateDBInstanceReadReplica API 或在 AWS 管理控制台上操作几步,即可在数分钟内创建只读副本。创建只读副本后,可以通过指定 SourceDBInstanceIdentifier 将其标识为只读副本。SourceDBInstanceIdentifier 是您要复制的“源”数据库实例的数据库实例标识符。同标准数据库实例一样,您也可以指定可用区、数据库实例类和首选维护时段。只读副本的引擎版本(例如,PostgreSQL 9.3.5)和存储分配均继承自源数据库实例。 

开始创建只读副本时,Amazon RDS 会获取源数据库实例的数据库快照,然后开始复制。因此,在获取快照时,您的源数据库实例上的 I/O 可能会短暂性停止。通常,I/O 暂停会按顺序持续一分钟时间;如果源数据库实例为多可用区部署模式,则可以避免这种状况(对于多可用区部署,从备用副本获取快照)。

此外,Amazon RDS 当前正在进行优化 (很快就会发布),因此如果您在 一个 30 分钟的时间段内创建多个只读副本,所有副本都将使用相同的源快照以降低 I/O 影响 (每个只读副本将在创建后开始“追踪”复制)。

您可以像连接标准数据库实例一样,使用 DescribeDBInstance API 或 AWS 管理控制台通过检索只读副本的端点连接到只读副本。如果有多个只读副本,各个副本之间的读取流量分配方式则取决于应用程序。

借助适用于 MySQL、MariaDB 和 PostgreSQL 的 Amazon RDS,您最多可为给定的源数据库实例创建 15 个只读副本。借助 Amazon RDS for Oracle 和 SQL Server,您最多可以为给定的源数据库实例创建 5 个只读副本。

能。Amazon RDS(RDS for SQL Server 除外)支持跨区域只读副本。数据写入源数据库实例与数据在只读副本上可用之间的时间长度取决于两个区域之间的网络延迟。

不支持。Amazon RDS for MySQL、MariaDB、PostgreSQL、Oracle 和 SQL Server 中的只读副本使用这些引擎的本机异步复制执行。Amazon Aurora 使用的是一种不同但仍然异步的复制机制。

如果您希望使用复制来增强数据库写入可用性以及保护最近的数据库更新以防出现各种故障,我们建议您以多可用区部署模式运行数据库实例。使用采用受支持的引擎本机异步复制的 Amazon RDS 只读副本,只读副本会在源数据库实例中执行数据库写入操作后也发生数据库写入,而且这种复制“滞后性”可能存在很大差别。 

相比之下,多可用区部署采用的副本属于同步复制,意味着主副本和备用副本上的数据库写入会并发执行。这样可保护最新的数据库更新,因为在出现故障转移时,它们需要在备用副本中可用。 

此外,使用多可用区部署,可完全托管复制操作。Amazon RDS 将自动监控数据库实例故障状况或可用区故障,并且如果发生中断,将自动故障转移到备用实例(如果使用 Amazon Aurora,则故障转移到只读副本)。

符合。由于多可用区数据库实例与只读副本解决的需求不同,所以在生产部署中可以结合两者,将只读副本与多可用区数据库实例部署关联起来。“源”多可用区数据库实例可增强写入可用性和数据持久性,而关联的只读副本可改善读取流量扩展性。

符合。Amazon RDS for MySQL、MariaDB、PostgreSQL 和 Oracle 允许您在只读副本上启用多可用区配置,以便支持灾难恢复并尽量缩短引擎升级造成的停机时间。

对于多可用区故障转移,所有关联和可用的只读副本在故障转移完成后将自动恢复复制(获取最新提升的主副本的更新)。

Amazon Aurora、Amazon RDS for MySQL 和 MariaDB:您可以创建三级只读副本。来自现有第一级只读副本的第二级只读副本和来自第二级只读副本的第三级副本。通过创建第二级和第三级只读副本,您可以根据您的应用程序需求将一些复制负载从主数据库实例移动到不同的只读副本级。

请注意,第二级只读副本可能会进一步滞后于主数据库实例,这是因为将事务处理从主数据库实例复制到第一级副本,然后再复制到第二级副本,其间会产生更长时间的复制延迟。同样,第三级副本可能滞后于第二级只读副本。

Amazon RDS for Oracle 和 Amazon RDS for SQL Server:目前不支持只读副本的只读副本。

只读副本旨在服务读取流量。不过,在某些使用案例中,高级用户可能希望针对只读副本完成数据定义语言 (DDL) SQL 语句。例如,这些情况可能包括向用于业务报告的只读副本添加数据库索引,而不向对应的源数据库实例添加相同的索引。

Amazon RDS for MySQL 可配置为允许针对只读副本的 DDL SQL 语句。如果希望启用读取给定只读副本之外的操作,则需要修改该只读副本的有效数据库参数组,将“read_only”参数设置为“0”。

Amazon RDS for PostgreSQL 目前不支持针对只读副本执行 DDL SQL 语句。

符合。有关更多详细信息,请参阅 Amazon RDS 用户指南

源数据库实例的更新会自动复制到所有关联的只读副本。不过,鉴于支持引擎的异步复制技术,出于各种原因,只读副本更新可能会落后于源数据库实例。常见的原因包括:

  • 源数据库实例的写入 I/O 卷超出对只读副本应用更改的速度(如果只读副本的计算容量低于源数据库实例,则尤其可能出现此问题)
  • 源数据库实例的复杂或长时间运行的事务延迟了到只读副本的复制
  • 源数据库实例和只读副本之间的网络分区或延迟

只读副本受支持引擎本机复制的优点和缺点影响。如果使用只读副本,您应了解只读副本与其源数据库实例之间可能存在滞后或“不一致”。

您可以使用标准 DescribeDBInstances API 返回已部署的所有数据库实例的列表(包括只读副本),或者直接单击 Amazon RDS 控制台的“实例”选项卡进行查看。

通过 Amazon RDS,您可以看到只读副本的更新落后其源数据库实例多远。只读副本更新落后主实例的秒数被作为一项 Amazon CloudWatch 指标(“副本滞后”)进行公布,可通过 AWS 管理控制台或 Amazon CloudWatch API 查看该指标。

对于 Amazon RDS for MySQL,此信息来源与针对只读副本发出标准“Show Replica Status”MySQL 命令后显示的信息相同。对于 Amazon RDS for PostgreSQL,您可以使用源数据库实例上的 pg_stat_replication 视图查看复制指标。

Amazon RDS 将监控只读副本的复制状态,如果由于任何原因停止复制(例如,如果在与主数据库实例上的更新相冲突的副本上运行 DML 查询,可能会导致复制错误),Amazon RDS 会在 AWS 管理控制台中将“复制状态”字段更新为“错误”。您可以通过查看“复制错误”字段来查看 MySQL 引擎产生的相关错误的详细信息,然后进行适当操作以对其进行恢复。您可以在 Amazon RDS for MySQL 或 Amazon RDS for PostgreSQL 用户指南的只读副本问题故障排除部分了解有关如何针对复制问题进行故障排除的更多信息。 

如果复制错误得到修复,“复制状态”将更改为“复制中”。

为使复制有效地工作,我们建议为只读副本配置与其各自的源数据库实例相同或更多计算和存储资源。否则,复制滞后可能会加大或者只读副本可能会耗尽用于存储副本更新的空间。

在 AWS 管理控制台中操作几步或将数据库实例标识符传送到 DeleteDBInstance API,即可删除只读副本。 

即使在已删除相应的源数据库实例后,Amazon Aurora 只读副本仍然保持有效并可继续接受读取流量。集群中的其中一个副本将自动提升为新的主副本,并开始接受写入流量。

即使在已删除相应的源数据库实例后,Amazon RDS for MySQL 或 Amazon RDS for MariaDB 只读副本仍然有效并可继续接受读取流量。如果您需要同时删除只读副本和源数据库实例,则必须使用 DeleteDBInstance API 或 AWS 管理控制台明确执行此操作。

如果您删除了一个具有只读副本的 Amazon RDS for PostgreSQL 数据库实例,则所有的只读副本都将被提升为独立的数据库实例,并将能够接受读取和写入流量。新提升的数据库实例将彼此独立地运行。如果您需要同时删除这些数据库实例和源数据库实例,则必须使用 DeleteDBInstance API 或 AWS 管理控制台明确执行此操作。

只读副本按标准数据库实例进行计费,且费率相同。 和标准数据库实例一样,只读副本的每“数据库实例小时”费率取决于只读副本的数据库实例类 – 有关最新的定价信息,请参阅定价页面。在同一个 AWS 区域的源数据库实例与只读副本之间复制数据,产生的数据传输不收取费用。

只读副本的账单周期从成功创建副本后开始(即当列出的状态为“有效”时)。读取副本将一直按标准 Amazon RDS 数据库实例小时费用计费,直到您发布命令将其删除为止。

增强监控

借助 Amazon RDS 增强型监控,您可以更深入地了解 Amazon RDS 实例的运行状况。只需为您的 Amazon RDS 数据库实例启用“增强型监控”选项并设置粒度,增强型监控就会按照定义的粒度收集重要的操作系统指标和进程信息。

如需对数据库负载进行更深入的诊断和可视化,并延长数据留存期,您可以试用性能详情

增强型监控能够捕获 Amazon RDS 实例的系统级指标,如 CPU、内存、文件系统和磁盘 I/O 等。在文档中可找到指标的完整列表。

增强型监控支持所有 Amazon RDS 数据库引擎。

增强监控支持除 t1.micro 和 m1.small 以外的所有实例类型。该软件仅占用少量 CPU、内存和 I/O,用于常规监控;对于中型或大型实例,我们建议切换至更高的粒度。对于非生产数据库实例,增强型监控的默认设置是“关”,您可以选择让其保持禁用状态,也可以在启用时修改粒度。

您可以在控制台上以图形格式查看 Amazon RDS 数据库实例的所有系统指标和进程信息。您可以针对各个实例管理要监控的指标,并根据个人要求自定义控制面板。

您可以为 Amazon RDS 账户中的每个数据库实例设置不同的粒度。您还可以选择要为其启用 Enhanced Monitoring 的实例,并随时修改任何实例的粒度。

您最多可以查看所有指标在 1 个小时之前的性能值,粒度最高为 1 秒(具体取决于您的设置)。

Amazon RDS 增强型监控生成的指标会发送到您的 CloudWatch Logs 账户。您可以基于 CloudWatch Logs 在 CloudWatch 中创建指标筛选器,并在 CloudWatch 控制面板上显示相关图表。有关更多详细信息,请访问 Amazon CloudWatch 页面。

如果 Amazon RDS 控制台控制面板上未显示您要查看的历史数据,则应使用 CloudWatch。您可以在 CloudWatch 中监控 Amazon RDS 实例,以诊断整个 AWS 堆栈在单一位置上的运行状况。目前,CloudWatch 最高可支持 1 分钟的粒度,平均粒度值将低于该值。

符合。您可以在 CloudWatch 中创建警报,以在警报状态更改时发送通知。警报按指定的时间段监控单个指标,并根据相对于指定阈值的指标值每隔若干个时间段执行一项或多项操作。有关 CloudWatch 警报的更多详细信息,请访问 Amazon CloudWatch 开发人员指南

答:Amazon RDS 增强型监控提供了一系列将以 JSON 有效负载形式发送到您的 CloudWatch Logs 账户的指标。JSON 有效负载会按照上次为 Amazon RDS 实例配置的粒度进行发送。

您可以通过第三方控制面板或应用程序以两种方式使用这些指标。监控工具可以使用 CloudWatch Logs Subscriptions 为这些指标设置近乎实时的源。另外,您可以使用 CloudWatch Logs 中的筛选器将指标桥接到 CloudWatch,并将您的应用程序与 CloudWatch 集成。请参阅 Amazon CloudWatch 文档,了解更多详细信息。

增强型监控会将 JSON 有效负载发送到您的 CloudWatch Logs 账户中的某个日志中,因此您可以像对待其他 CloudWatch Logs 流一样控制其保留期。增强型监控在 CloudWatch Logs 中配置的默认保留期是 30 天。有关如何更改保留期设置的详细信息,请参阅 Amazon CloudWatch 开发人员指南

由于指标会发送至 CloudWatch Logs,在超出 CloudWatch Logs 免费套餐后,您需要支付的费用将基于 CloudWatch Logs 数据传输和存储费率进行计算。在此处可以找到定价详细信息。Amazon RDS 实例的信息传输量与增强型监控功能的定义粒度呈正比。管理员可以为账户中的不同实例设置不同的粒度以管理成本。

由 Enhanced Monitoring 针对一个实例发送到 CloudWatch Logs 的数据量近似值如下所示:

粒度 60 秒 30 秒 15 秒 10 秒 5 秒 1 秒

发送到 CloudWatch Logs 的数据* (GB/月)

0.27

0.53

1.07

1.61

3.21

16.07

Amazon RDS 代理

Amazon RDS 代理是 Amazon RDS 的一种完全托管的高可用性数据库代理功能。RDS 代理可提升应用程序的可扩展性、处理数据库故障的灵活性以及安全性。

Amazon RDS 代理是 Amazon RDS 的一种完全托管且易于使用的高可用性数据库代理功能,可使您的应用程序:1) 通过池化和共享数据库连接来提高可扩展性;2) 通过将数据库失效转移次数减少高达 66% 并在失效转移期间保留应用程序连接来提高可用性;及 3) 通过选择性地对数据库强制进行 AWS IAM 身份验证及将凭证安全地存储在 AWS Secrets Manager 中提高安全性。

根据您的工作负载情况,Amazon RDS 代理可以为查询或交易响应时间平均增加 5 毫秒的网络延迟。如果您的应用程序无法容忍 5 毫秒的延迟或者不需要 RDS 代理支持的连接管理和其他功能,您可能希望您的应用程序直接连接到数据库端点。

Amazon RDS 代理可将您的方法转变为构建现代无服务器应用程序,该应用程序利用关系数据库的强大功能和简单性。首先,RDS 代理可通过池化和重复利用数据库连接使无服务器应用程序高效扩展。其次,使用 RDS 代理,您不再需要在您的 Lambda 代码中处理数据库凭证。您可以使用与您的 Lambda 函数关联的 IAM 执行角色,以通过 RDS 代理和您的数据库进行身份验证。第三,您不需要管理任何新的基础设施或代码便能充分利用关系数据库所支持的无服务器应用程序潜力。RDS 代理是完全托管的,可根据您的应用程序需要自动扩展其容量。

RDS 代理支持与 MySQL 兼容的 Amazon Aurora、与 PostgreSQL 兼容的 Amazon Aurora、Amazon RDS for MariaDB、Amazon RDS for MySQL、Amazon RDS for PostgreSQL 以及 Amazon RDS for SQL Server。有关受支持引擎版本的列表,请参阅 Amazon Aurora 用户指南Amazon RDS 用户指南

只需在 Amazon RDS 控制台中单击几下,您即可为您的 Amazon RDS 数据库启用 Amazon RDS 代理。启用 RDS 代理时,您可以指定您希望从中访问 RDS 代理的 VPC 和子网。作为一个 Lambda 用户,您可以为您的 Amazon RDS 数据库启用 Amazon RDS 代理,并设置 Lambda 函数,以便只需在 Lambda 控制台中单击几下就可以访问该代理。

符合。您可以使用 Amazon RDS 代理 API 创建代理,然后定义目标组,以将该代理与特定数据库实例或集群关联。例如:

aws rds create-db-proxy 
        --db-proxy-name '…' 
        --engine-family <mysql|postgresql>       
        --auth [{}, {}] 
        --role-arn '…'
        --subnet-ids {}
        --require-tls <true|false>
        --tags {}
aws rds register-db-proxy-targets 
        --target-group-name '…'
        --db-cluster-identifier  '…'
        --db-instance-identifier '…'

Trusted Language Extensions for PostgreSQL

Trusted Language Extensions (TLE) for PostgreSQL 使开发人员能够构建高性能 PostgreSQL 扩展,并在 Amazon AuroraAmazon RDS 上安全运行。通过这样做,TLE 将缩短您的上市时间,并减轻数据库管理员在认证用于生产数据库工作负载的自定义和第三方代码方面的负担。一旦您决定延期满足需求,即可继续前进。通过 TLE,独立软件供应商(ISV)可以为在 Aurora 和 Amazon RDS 上运行的客户提供新的 PostgreSQL 扩展。

PostgreSQL 扩展在同一进程空间中执行,以获得高性能。然而,扩展可能存在软件缺陷,从而导致数据库崩溃。

TLE for PostgreSQL 提供了多重保护来降低这种风险。TLE 旨在限制对系统资源的访问。rds_superuser 角色可以确定允许谁安装特定的扩展。然而,这些更改只能通过 TLE API 进行。TLE 旨在限制扩展缺陷对单个数据库连接的影响。除了这些安全措施之外,TLE 还旨在以 rds_superuser 角色为 DBA 提供细粒度的在线控制,控制谁可以安装扩展以及他们可以创建运行扩展所需的权限模型。

只有具有足够权限的用户才能在 TLE 扩展上使用“CREATE EXTENSION”命令运行和创建。DBA 还有更复杂的扩展所需的允许列表“PostgreSQL 挂钩”,这些扩展修改数据库的内部行为,通常需要提升权限。

TLE for PostgreSQL 可用于 Amazon Aurora PostgreSQL 兼容版Amazon RDS on PostgreSQL 版本 14.5 及更高版本。TLE 本身作为 PostgreSQL 扩展实施,您可以通过 rds_superuser 角色将其激活,类似于 Aurora 和 Amazon RDS 上支持的其他扩展。

您可以在 Amazon AuroraAmazon RDS 的 PostgreSQL 14.5 或更高版本中运行 TLE for PostgreSQL。 

TLE for PostgreSQL 当前已在所有 AWS 区域(不含 AWS 中国区域)和 AWS GovCloud 区域推出。

AuroraAmazon RDS 客户可以免费使用 TLE for PostgreSQL

AuroraAmazon RDS 支持超过 85 个精选 PostgreSQL 扩展的集合。AWS 根据 AWS 责任共担模式管理每个扩展的安全风险。实施 TLE for PostgreSQL 的扩展包含在此集合中。您写入的扩展或从第三方来源获取并安装在 TLE 中的扩展被视为应用程序代码的一部分。您负责使用 TLE 扩展的应用程序的安全性。

您可以构建开发人员功能,如位图压缩和差异化隐私(如保护个人隐私的可公开访问的统计查询)。

TLE for PostgreSQL 当前支持 JavaScript、PL/pgSQL、Perl 和 SQL。

一旦 rds_superuser 角色激活 TLE for PostgreSQL,您就可以使用 SQL CREATE EXTENSION 命令从任何 PostgreSQL 客户端(如 psql)部署 TLE 扩展。这类似于创建用程序语言(如 PL/pgSQL 或 PL/Perl)编写的用户定义函数的方式。您可以控制哪些用户具有部署 TLE 扩展和使用特定扩展的权限。

TLE for PostgreSQL 仅通过 TLE API 访问您的 PostgreSQL 数据库。TLE 支持的可信语言包括 PostgreSQL 服务器编程接口(SPI)的所有功能,并支持 PostgreSQL 挂钩,包括检查密码挂钩。

您可以在官方 TLE GitHub 页面了解有关 TLE for PostgreSQL 项目的更多信息。

Amazon RDS 蓝绿部署

Amazon RDS 蓝绿部署在 Amazon Aurora MySQL 兼容版 5.6 及更高版本、RDS for MySQL 版本 5.7 及更高版本、RDS 版本 MariaDB 版本 10.2 及更高版本中可用。Amazon Aurora PostgreSQL 兼容版本和 Amazon RDS for PostgreSQL 版本 11.21 及更高版本、12.16 及更高版本、13.12 及更高版本、14.9 及更高版本以及 15.4 及更高版本也支持蓝绿部署。在 Amazon AuroraAmazon RDS 文档中了解有关可用版本的更多信息。 

Amazon RDS 蓝绿部署现已在所有适用的 AWS 区域和 AWS GovCloud 区域推出。

Amazon RDS 蓝绿部署可让您实现更安全、更简单、更快速的数据库更改。蓝绿部署非常适用于主版本或次要版本数据库引擎升级、操作系统更新、在不中断逻辑复制的情况下进行绿色环境中的架构更改(例如在表末尾添加新列或数据库参数设置更改)等应用场景。您可以使用蓝绿部署通过单次切换同时更新多个数据库。这使您可以随时了解最新的安全补丁,提高数据库性能,并在可预测的短暂停机时间内访问更新的数据库功能。

在绿色实例上运行工作负载的成本与在蓝色实例上运行时相同。在蓝色和绿色实例上运行的成本包括 db.instances、存储成本、读/写 I/O 成本以及任何已启用功能的当前标准定价,如备份成本和 Amazon RDS 性能详情。实际上,在蓝绿部署寿命周期内,您的成本大约是在 db.instance 上运行工作负载成本的 2 倍。

例如:您的 RDS for MySQL 5.7 数据库运行在两个 r5.2xlarge db.instances 上,一个主数据库实例和一个只读副本,在具有多 AZ (MAZ) 配置的 us-east-1 AWS 区域中。每个 r5.2xlarge db.instance 均配置为 20 GiB 通用型 Amazon Elastic Block Storge (EBS)。使用 Amazon RDS 蓝绿部署创建蓝色实例拓扑的克隆,运行 15 天(360 小时),然后在切换成功后删除蓝色实例。蓝色实例 15 天费用为 1,387 美元,即期票汇汇率为 1.926 美元/小时(实例 + EBS 成本)。在这 15 天内,使用蓝/绿部署的总成本为 2,774 美元,是该时间段运行蓝色实例的成本的 2 倍。

Amazon RDS 蓝绿部署可让您进行更安全、更简单、更快速的数据库更改,如主要或次要版本升级、架构更改、实例缩放、引擎参数更改和维护更新。

Amazon RDS 蓝绿部署中,蓝色环境是您当前的生产环境。绿色环境是您的暂存环境,在切换后将成为您的新生产环境。

当 Amazon RDS 蓝绿部署启动切换时,它们会阻止任何对蓝色和绿色环境的写入,直到切换完成。在切换过程中,暂存环境(或绿色环境)会跟随生产系统,确保暂存环境和生产环境之间的数据一致。一旦生产环境和暂存环境完全同步,蓝绿部署通过将流量重定向到新提升的生产环境,将暂存环境提升为生产环境。蓝绿部署旨在在切换完成后启用绿色环境中的写入,确保切换过程中无数据丢失。

如果您的蓝色环境是自行管理的逻辑副本或订阅用户,我们将阻止切换。我们建议您首先停止向蓝色环境的复制,继续进行切换,然后再继续复制。相反,如果您的蓝色环境是自行管理的逻辑副本的来源或发布者,则可以继续切换。但是,您需要更新自行管理的副本,以便在切换后从绿色环境中进行复制。

Amazon RDS 蓝绿部署不会删除旧生产环境。如果需要,您可以访问该环境进行其他验证和性能/回归测试。如果您不再需要旧生产环境,可以将其删除。标准账单费用适用于旧生产实例,直到您将其删除。

Amazon RDS 蓝绿部署切换防护机制将阻止对蓝色和绿色环境的写入,直到您的绿色环境在切换之前成功跟随。蓝绿部署还可以对蓝色和绿色环境中的主副本执行运行状况检查。它们还将执行复制运行状况检查,例如,查看复制是否已停止或是否存在错误。它们将检测蓝绿环境之间的长时间运行事务。您可以指定可忍受的最大停机时间,最短为 30 秒,如果正在进行的事务超过此时间,则切换将超时。

不,Amazon RDS 蓝绿部署不支持全局数据库Amazon RDS 代理、跨区域只读副本或级联只读副本。

否,您目前无法使用 Amazon RDS 蓝绿部署回滚更改。

Amazon RDS Optimized Writes

MySQL 通过将 16KiB 页面中的数据两次写入持久性存储,首先写入“双写缓冲区”,然后写入表存储,从而保护用户免受数据丢失。Amazon RDS 优化型写入功能使用 AWS Nitro System 的 Torn Write Prevention 功能一步将您的 16KiB 数据页可靠且持久地写入您的数据文件。

Amazon RDS Optimized Writes 可用于 db.r6i 和 db.r5b 实例。所有提供这些实例的区域(除 AWS 中国区域外)均提供。

否,Amazon Aurora MySQL 兼容版已避免使用“双写缓冲区”。 相反,Amazon Aurora 跨三个可用区(AZ)以六种方式复制数据,并使用基于 Quorum 的方法持久地写入数据,然后正确地读取数据。

目前,此初始版本不支持为现有数据库实例启用 Amazon RDS 优化型写入功能,即使实例类支持优化型写入。

RDS for MySQL 客户无需额外付费即可使用 Amazon RDS 优化型写入功能

Amazon RDS Optimized Reads

使用 MySQL 和 MariaDB 中的临时对象进行查询处理的工作负载受益于 Amazon RDS Optimized Reads。 Optimized Reads 将临时对象放置在数据库实例的基于 NVMe 的实例存储上,而不是 Amazon Elastic Block Store 卷上。这有助于将复杂的查询处理速度提高至原来的 2 倍。

Amazon RDS 优化型读取功能在 db.r5d、db.m5d、db.r6gd 和 db.m6gd、X2idn 和 X2iedn 实例可用的所有区域提供。有关更多信息,请参阅 Amazon RDS 数据库实例类文档

当客户的工作负载需要复杂查询时,应使用 Amazon RDS 优化型读取功能;通用分析;或者需要复杂的组、排序、散列聚合、高负载连接和公用表表达式 (CTE)。这些使用案例导致创建临时表,从而允许优化型读取功能加快工作负载的查询处理。

是的,客户可以通过将您的工作负载移动到支持优化型读取功能的实例,将现有的 Amazon RDS 数据库转换为使用 Amazon RDS 优化型读取功能。默认情况下,所有受支持的实例类都可以使用 Optimized Reads。如果您正在 db.r5d、db.m5d、db.r6gd、db.m6gd、X2idn 和 X2iedn 实例上运行工作负载,那么您已经从 Optimized Reads 中受益。