一般性问题
问:什么是 Amazon RDS?
Amazon Relational Database Service (Amazon RDS) 是一种托管服务,可以让用户在云中轻松设置、操作和扩展关系数据库。它在管理耗时的数据库管理任务的同时,提供经济实用的可调容量,使您能够腾出时间专注于应用程序和业务。
Amazon RDS 让您能够访问常见 MySQL、MariaDB、Oracle、SQL Server 或 PostgreSQL 数据库的功能。这意味着您当前用于现有数据库的代码、应用程序和工具也可以无缝用于 Amazon RDS。Amazon RDS 可以自动备份您的数据库,并使您的数据库软件版本保持最新。您可以灵活方便地扩展与关系数据库实例相关联的计算资源或存储容量,从而从中受益。此外,Amazon RDS 还可以轻松地使用复制功能来增强数据库可用性、提高数据持久性,或扩展超出单个数据库实例的容量限制,以满足读取密集型数据库工作负载的容量限制。与所有亚马逊云科技服务一样,您无需进行任何预先投资,只需为您使用的资源付费。
问:Amazon RDS 支持哪些关系数据库引擎?
Amazon RDS 支持 Amazon Aurora、MySQL、MariaDB、Oracle、SQL Server 和 PostgreSQL 数据库引擎。
问:Amazon RDS 可代我管理哪些内容?
Amazon RDS 可管理关系数据库设置所涉及的工作:从预置请求的基础设施容量到安装数据库软件。在您的数据库启动并运行后,Amazon RDS 会自动执行常规的管理任务,如执行备份以及修补为数据库提供支持的软件。借助可选的多可用区部署,Amazon RDS 还会管理可用区之间的同步数据复制以及自动故障转移。
Amazon RDS 提供本机数据库访问,因此您可以像通常一样与关系数据库软件交互。这意味着您仍负责管理特定于应用程序的数据库设置。您需要构建最适合自己使用案例的关系架构,并负责调整性能以优化适用于应用程序工作流程的数据库。
问:应该分别在哪些时候使用 Amazon RDS 和Amazon EC2 关系数据库 AMI?
亚马逊云科技为开发人员提供了丰富的数据库备选项。Amazon RDS 让您能运行功能完善的关系数据库,同时又让您摆脱数据库管理工作。通过使用 Amazon EC2 上的众多关系数据库 AMI 之一,您可在云中管理自己的关系数据库。这些备选项之间存在很大差别,其中的某项可能更适合您的应用场景。
问:如何开始使用 Amazon RDS?
要注册 Amazon RDS,您必须要有亚马逊云科技账户。如果还没有账户,请创建一个账户。注册后,请参阅 Amazon RDS 文档,其中包含了入门指南。
Amazon RDS 是免费套餐的一部分,因此,亚马逊云科技新客户可以免费在云中开始使用托管数据库服务。
问:如何在 Amazon EC2 计算实例上运行的应用程序或基于 SQL 的客户端与我的 Amazon RDS 数据库实例/集群之间建立连接?
您可以使用 Amazon RDS 控制台在 EC2 计算实例和新的 Amazon RDS 数据库之间建立连接。在“创建数据库”页面上,选择“连接”部分中的“连接到 EC2 计算资源”选项。当您选择此选项时,Amazon RDS 会自动执行手动联网设置任务,例如创建 VPC、安全组、子网以及在应用程序和数据库之间建立连接的传入/传出规则。
此外,您可以在现有 Amazon RDS 数据库和 EC2 计算实例之间建立连接。为此,请打开 RDS 控制台,从数据库列表页面中选择 RDS 数据库,然后从“操作”菜单下拉列表中选择“设置 EC2 连接”。Amazon RDS 会自动设置您的相关网络设置,以启用所选 EC2 实例与 RDS 数据库之间的安全连接。
这种连接自动化提高了新用户和应用程序开发人员的工作效率。现在,用户可以在几分钟内使用 EC2 计算实例上的 SQL,快速无缝地将应用程序或客户端连接到 RDS 数据库。
数据库实例
问:什么是数据库实例(DB 实例)?
您可以将数据库实例视为云中的数据库环境,其中包含您所指定的计算和存储资源。您可以创建和删除数据库实例,定义/优化数据库实例的基础设施属性,还能通过亚马逊云科技管理控制台、Amazon RDS API 和亚马逊云科技命令行界面控制访问权限和安全性。您可以运行一个或多个数据库实例,且每个数据库实例都可以支持一个或多个数据库或数据库架构,具体取决于引擎类型。
问:如何创建数据库实例?
借助亚马逊云科技管理控制台、Amazon RDS API 或亚马逊云科技命令行界面,您可以轻松创建数据库实例。要使用亚马逊云科技管理控制台启动数据库实例,请单击“RDS”,然后单击实例选项卡上的启动数据库实例按钮。您可以从中指定数据库实例的参数,包括数据库引擎和版本、许可证模式、实例类型、存储类型和存储量,以及主用户凭证。
您还可以更改数据库实例的备份保留策略、首选备份时段和计划维护时段。此外,您还可以使用 CreateDBInstance API 或 create-db-instance 命令创建数据库实例。
问:如何访问正在运行的数据库实例?
只要数据库实例可用,您就能在亚马逊云科技管理控制台、DescribeDBInstances API 或 describe-db-instances 命令中通过数据库实例描述检索其终端节点。使用这个终端节点,您即可用您最喜欢的数据库工具或编程语言构建与您的数据库实例直接相连所需的连接字符串。要允许对您正在运行的数据库实例发出的网络请求,您需要授予访问权限。有关如何构建连接字符串以及如何开始使用的详细说明,请参阅我们的入门指南。
问:使用 Amazon RDS 可以运行多少个数据库实例?
默认情况下,客户最多可拥有 40 个 Amazon RDS 数据库实例。在这 40 个实例中,最多 10 个实例可以是“附带许可证”模式下的 Oracle 或 SQL Server 数据库实例。40 个实例全都可用于“BYOL”模式下的 Amazon Aurora、MySQL、MariaDB、PostgreSQL 以及 Oracle。请注意,RDS for SQL Server 的单个数据库实例上限为 100 个,要了解更多信息,请参阅 Amazon RDS SQL Server 用户指南。
如果您的应用程序需要更多的数据库实例,您可以通过此申请表申请更多数据库实例。
问:可在一个数据库实例内运行多少个数据库或数据库架构?
- RDS for Amazon Aurora:软件没有强制限制
- RDS for MySQL:软件没有强制限制
- RDS for MariaDB:软件没有强制限制
- RDS for Oracle:每个实例 1 个数据库;软件对于数据库架构的数量没有强制限制
- RDS for SQL Server:每个实例最多 100 个数据库。请参阅此处:Amazon RDS SQL Server 用户指南
- RDS for PostgreSQL:软件没有强制限制
问:如何将数据导入 Amazon RDS 数据库实例?
将数据导入 Amazon RDS 的方式有很多并且非常简单,例如对于 MySQL,使用 mysqldump 或 mysqlimport 实用程序;对于 Oracle,使用数据泵、导入/导出或 SQL Loader;对于 SQL Server,使用导入/导出向导、完整备份文件(.bak 文件)或 Bulk Copy Program (BCP);对于 PostgreSQL,使用 pg_dump。有关数据导入和导出的更多信息,请参阅 MySQL 数据导入指南、Oracle 数据导入指南、SQL Server 数据导入指南或 PostgreSQL 数据导入指南。
此外,Amazon Database Migration Service 可帮助您轻松安全地将数据库迁移至亚马逊云科技。
问:什么是维护时段? 我的数据库实例在维护活动期间是否可用?
您可在 Amazon RDS 维护时段控制数据库实例修改、数据库引擎版本升级和软件修补的时间,以便在请求或需要时加以应对。如果在给定一周内安排了维护工作,则在指定维护时段内启动维护。
需要 Amazon RDS 将数据库实例脱机的维护情况是扩展计算操作(从始至终通常只需要几分钟时间)、数据库引擎版本升级和按要求修补软件。只有安全和持久的软件补丁会自动安排要求的修补。这种修补很少发生(通常几个月一次),并且几乎不会需要过长的维护时间。
如果创建数据库实例时未指定首选周维护时段,系统将分配默认值 30 分钟。如果希望在代您执行维护时进行修改,您可以通过亚马逊云科技管理控制台或使用 ModifyDBInstance API 或 modify-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 用户指南。
如果使用的是 RDS for Oracle,您可以使用 Oracle 跟踪文件数据来确定慢查询。有关访问跟踪文件数据的更多信息,请参阅 Amazon RDS 用户指南。
如果使用的是 RDS for SQL Server,您可以使用客户端 SQL Server 跟踪文件来确定慢查询。有关访问服务器端跟踪文件数据的更多信息,请参阅 Amazon RDS 用户指南。
数据库引擎版本
问:Amazon RDS 支持哪些关系数据库引擎版本?
要获得支持的数据库引擎版本列表,请参阅每个引擎的文档:
- Amazon RDS for MySQL
- Amazon RDS for MariaDB
- Amazon RDS for PostgreSQL
- Amazon RDS for Oracle
- Amazon RDS for SQL Server
- Amazon Aurora
问:Amazon RDS 如何区分“主要”和“次要”数据库引擎版本?
有关版本编号的详细信息,请参阅各个 Amazon RDS 数据库引擎的常见问题页面。
问:Amazon RDS 是否提供新数据库引擎版本支持指南?
Amazon RDS 会逐渐增加对新的主要和次要数据库引擎版本的支持。支持的新版本的数量将有所不同,具体取决于引擎供应商或开发组织的发布版本和补丁的频率和内容,以及我们的数据库工程团队对这些版本和补丁的彻底审查结果。不过,一般而言,我们计划在通用版本发布后 5 个月内支持新的引擎版本。
问:如何指定希望数据库实例运行哪个受支持的数据库引擎版本?
您在通过亚马逊云科技管理控制台中的启动数据库实例操作或 CreateDBInstance API 创建新数据库实例时,可以指定当前受支持的任何版本(主要和次要)。
问:如何控制是否以及何时将数据库实例引擎版本升级到受支持的新版本?
Amazon RDS 通过为您提供更新版本的受支持数据库引擎,从而使您的数据库实例保持最新。供应商或开发组织发布新版数据库引擎后,我们的数据库工程团队会对其进行全面测试,然后才会在 Amazon RDS 中提供相应版本。
建议您将数据库实例升级到最新的次要版本,因为它包含最新的安全和功能修复程序。与主要版本升级不同的是,次要版本升级仅包括与数据库引擎之前的次要版本(主要版本相同)向后兼容的数据库更改。
如果新的次要版本不包含有益于 RDS 客户的修复程序,我们可能会选择不在 RDS 中提供该版本。在 RDS 中提供新的次要版本后不久,我们会将其设置为新数据库实例的首选次要版本。
要手动将数据库实例升级到受支持的引擎版本,请使用亚马逊云科技管理控制台中的修改数据库实例命令或者 ModifyDBInstance API,然后将数据库引擎版本参数设置为所需版本。默认情况下,系统将立即或在下一维护时段应用升级。您也可以通过选择控制台 API 中的立即应用选项选择立即升级。
如果我们确定新的引擎次要版本和之前发布的次要版本相比包含了重要的错误修复程序,我们将为自动次要版本升级设置为“是”的数据库实例安排自动升级。这些升级将安排在客户指定的维护时段内进行。
我们会提供日程表以便您根据其制定计划,因为升级数据库引擎版本需要停机,即便对于多可用区实例也是如此。如果您希望关闭自动次要版本升级,只需将“自动次要版本升级”设置为“否”即可。
对于 RDS for Oracle 和 RDS for SQL Server,如果升级到下一个次要版本需要更改为其他版本,那么即使您启用了自动次要版本升级设置,我们也可能不会安排自动升级。在这种情况下,是否安排自动升级将根据具体情况而定。
由于主要版本升级涉及一些兼容性风险,因此不会自动执行且必须由您启动(除非主要版本已被弃用,请参阅下文)。
有关将数据库实例升级到新的数据库引擎版本的更多信息,请参阅 Amazon RDS 用户指南。
问:升级前,是否可以针对新版本测试数据库实例?
支持。您只需创建现有数据库实例的数据库快照,从该数据库快照进行还原以创建新的数据库实例,然后为新的数据库实例启动版本升级即可。之后,您可以在升级后的数据库实例副本上安全地进行测试,然后决定是否升级原始的数据库实例。
有关还原数据库快照的更多信息,请参阅 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 将自动升级您的数据库引擎以解决相关问题。所需时间会因不同的情况而异,具体取决于要解决的问题。
问:如果某个 RDS 数据库引擎版本被弃用,会出现什么情况?
当 Amazon RDS 中弃用数据库引擎的次要版本时,我们将在公告发布之后提供三 (3) 个月的期限,然后才开始自动升级。这一时间结束后,仍在运行已弃用次要版本的所有实例均会被安排在计划维护时段内自动升级到受支持的最新次要版本。
当 Amazon RDS 弃用某个数据库引擎的主要版本后,我们会在宣布弃用后提供至少六 (6) 个月的时间,以便您升级到受支持的主要版本。这一时间结束后,仍在运行已弃用版本的所有实例均会在计划维护时段内自动升级到下一个主要版本。
当某个主要或次要数据库引擎版本在 Amazon RDS 中不受支持后,从使用不受支持的版本创建的数据库快照恢复的所有数据库实例都将立即自动升级到当前受支持的版本。
计费
问:Amazon RDS 的使用如何收费和计费?
您只需为实际使用量付费,无最低费用或设置费用。您的计费依据为:
- 数据库实例小时数 – 基于使用的数据库实例类(如 db.t2.micro、db.m4.large)。数据库实例运行未满一小时的按一小时计费。
- 存储(每月每 GB)– 您为数据库实例预置的存储容量。如果您在当月内扩展了预置的存储容量,则您的账单将按比例分配。
- 每月的 I/O 请求数 – 您的存储 I/O 请求总数量(仅限于 Amazon RDS 磁性存储和 Amazon Aurora)
- 每月的预置 IOPS – 预置 IOPS 费率,不论 IOPS 的消耗量如何(仅限于 Amazon RDS 预置 IOPS [SSD] 存储)
- 备份存储 – 备份存储是指与您的自动数据库备份和任何由客户启动的数据库快照相关的存储。延长备份保留期或增加数据库快照拍摄数量,将增加数据库所消耗的备份存储。
- 数据传输 – 传入和传出数据库实例的 Internet 数据。
有关 Amazon RDS 定价信息,请访问 Amazon RDS 产品页的定价部分。
问:我的 Amazon RDS 数据库实例的账单何时开始和结束?
数据库实例的账单周期从该数据库实例可用时开始计算。账单周期一直持续到该数据库实例终止之时,删除实例或实例出现故障时会发生终止。
问:Amazon RDS 应计费实例小时数如何界定?
数据库实例小时数是指按您的数据库实例在可用状态下运行的每个小时计费。如果您希望不再为数据库实例付费,则必须将其停止或删除,以免产生更多应计费实例小时数。数据库实例运行未满一小时的按一小时计费。
问:如何为已停止的数据库实例收费?
当您的数据库实例停止时,您需要为预置存储(包括预置 IOPS)和备份存储(包括指定保留时段内的手动快照和自动备份)付费,但无需为数据库实例小时数付费。
问:为什么我的额外备份存储成本要高于分配的数据库实例存储?
您的数据库实例为主要数据预置的存储位于单一可用区内。备份数据库时,将在多个可用区之间冗余地复制备份数据(包括事务日志),以提供更高级别的数据持久性。超出免费分配之外的备份存储定价体现了关键备份的持久性最大化所需的额外复制操作。
问:如何为多可用区数据库实例部署计费?
如果您指定数据库实例为多可用区部署,系统将根据 Amazon RDS 定价页面上发布的多可用区定价计费。多可用区的计费依据为:
- 多可用区数据库实例小时数 – 基于使用的数据库实例类(如 db.t2.micro、db.m4.large)。对于单一可用区中的标准部署,不足一小时的数据库实例将按一小时计费。如果在给定小时内数据库实例部署在标准和多可用区模式之间发生转换,将按该小时适用的费用收费。
- 预置存储(适用于多可用区数据库实例)— 如果在给定小时内数据库实例部署在标准和多可用区模式之间发生转换,将按高于该小时适用存储的费用收费。
- 每月的 I/O 请求数 – 您拥有的存储 I/O 请求总数。多可用区部署耗用的 I/O 请求量高于标准数据库实例部署,具体取决于数据库的写入/读取比率。与更新数据库更新相关的写入输入/输出用量将会翻倍,因为 Amazon RDS 会同时将数据复制到备用数据库实例。读取 I/O 使用量保持不变。
- 备份存储 – 无论您的数据库实例是标准部署还是多可用区部署,备份存储使用量都保持不变。只需从备用中获取备份,以避免数据库实例主实例上的输入/输出暂停。
- 数据传输 – 在主实例和备用实例之间复制数据不会产生数据传输费用。传入和传出数据库实例的 Internet 数据传输费用与标准部署的费用相同。
问:你们的价格是否包括税金?
除非另有说明,否则我们的价格不包括适用的税费和关税(包括增值税和适用销售税)。
免费套餐
问:适用于 Amazon RDS 的免费套餐支持哪些区域?
适用于 Amazon RDS 的免费套餐现已在由西云数据运营的亚马逊云科技中国(宁夏)区域和由光环新网运营的亚马逊云科技中国(北京)区域推出。
问:适用于 Amazon RDS 的免费套餐包含哪些内容?
适用于 Amazon RDS 的免费套餐让您能够免费使用运行 MySQL、MariaDB、PostgreSQL、Oracle(“自带许可(BYOL)”许可模式)和 SQL Server 快速版的单可用区微型数据库实例。免费使用套餐每月提供多达 750 小时的实例小时数。客户每月还可以免费获得 20GB 的通用型 (SSD) 数据库存储和 20GB 的备份存储。
问:适用于 Amazon RDS 的免费套餐在哪些时段向我开放?
新账户可以获得免费套餐长达 12 个月的使用权。有关更多信息,请参阅免费套餐常见问题。
问:我是否可以在适用于 Amazon RDS 的免费使用套餐下运行多个数据库实例?
支持。您可同步运行多个单可用区微型数据库实例,并且可以将使用量计入适用于 Amazon RDS 的免费套餐中。但是,任何超过 750 实例小时的用量,包括所有 Amazon RDS 单一可用区微型数据库实例、所有适用的数据库引擎和区域,均按标准的 Amazon RDS 价格计费。
例如:如果您将两个单可用区微型数据库实例在一个月内各运行了 400 个小时,您将累计使用实例 800 小时,其中的 750 小时是免费的。剩下的 50 个小时将按标准的 Amazon RDS 价格计费。
问:我对免费套餐下的每个 MySQL、MariaDB、PostgreSQL、Oracle 和 SQL Server 微型数据库实例都有 750 个小时的访问权限吗?
否。有权使用免费套餐的客户最多可使用 750 个小时的微型实例,无论实例运行的是 MySQL、PostgreSQL、Oracle 还是 SQL Server Express Edition。任何超过 750 实例小时的用量,包括所有 Amazon RDS 单一可用区微型数据库实例、所有适用的数据库引擎和区域,均按标准的 Amazon RDS 价格计费。
问:当我的实例小时使用量超出了免费套餐提供的量时,应如何计费?
对于超出免费套餐所提供的实例小时数,将按标准的 Amazon RDS 价格计费。有关更多信息,请参阅 Amazon RDS 定价页面。
预留实例
问:什么是预留实例 (RI)?
借助 Amazon RDS 预留实例,您可以将数据库实例预留一年或三年,并借此获得与按需实例定价相比而言更大的折扣。RI 有三种付款选项 – 不预付、部分预付、全额预付 – 您可以通过这三种选项平衡您的预付款金额与有效小时价格。
问:预留实例与按需数据库实例有何不同?
预留实例和按需数据库实例在功能上是完全相同的。唯一的区别在于数据库实例的计费方式:对于预留实例,您可以购买一年或三年期预留实例,并借此在持续期限内享受较低的有效小时使用费率(相对于按需数据库实例)。除非您在一个区域购买预留实例,否则所有数据库实例都将根据按需小时费率计费。
问:如何购买和创建预留实例?
您可以在适用于 Amazon RDS 的亚马逊云科技管理控制台的“预留实例”部分购买预留实例。另外,您还可以使用 Amazon RDS API 或亚马逊云科技命令行界面列出可供购买的预留,然后购买数据库实例预留。
购买预留实例之后,预留数据库实例与按需数据库实例的使用方式相同。您可以使用您预留的实例类、引擎和区域启动数据库实例。只要激活您购买的预留,Amazon RDS 即会对您符合资格的新数据库实例应用折扣后的每小时费率。
问:预留实例是否包括容量预留?
Amazon RDS 预留实例针对区域而非某个特定的可用区出售。由于 RI 并非特定于某个可用区,因此不包括容量预留。这意味着即使某个可用区的容量有限,您仍然可以在该区域内购买预留,且折扣将适用于该区域内所有可用区的匹配使用量。
问:我可以购买多少个预留实例?
您最多可以购买 40 个预留数据库实例。如果要运行 40 个以上数据库实例,请填写申请表。
问:如果我想将现有数据库实例替换为预留实例,应该怎么办?
只需在您当前运行并想预留的数据库实例所在的同一区域内购买具有相同数据库实例类、数据库引擎、多可用区选项和许可证模型的数据库实例预留即可。成功购买预留后,Amazon RDS 将自动对您现有的数据库实例应用新的小时使用费用。
问:如果我注册了预留实例,预留期限从何时开始算起? 期限结束时,我的数据库实例会发生什么情况?
收到您的请求及处理付款授权后,系统将会激活与预留实例相关联的定价变更。您可以在“亚马逊云科技账户活动”页面或使用 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 用户指南。
问:如何扩展与我的 Amazon RDS 数据库实例关联的计算资源和/或存储容量?
您可以使用亚马逊云科技管理控制台(选择所需的数据库实例并单击修改按钮)、RDS API 或亚马逊云科技命令行界面扩展为数据库实例分配的计算资源和存储容量。通过更改数据库实例类可以修改内存和 CPU 资源,可用存储将随存储分配更改而发生变化。请注意,修改数据库实例类或分配的存储时,系统将在指定的维护时段内应用您请求的更改。此外,您可以使用“apply-immediately”标记立即应用扩展请求。请注意,任何其他待定的系统更改也将同时应用。
问:Amazon RDS 存储的硬件配置是什么?
Amazon RDS 的数据库和日志存储采用 EBS 卷。根据所请求存储的容量,Amazon RDS 自动将多个 EBS 卷分成条状以增强 IOPS 性能。就 MySQL 和 Oracle 而言,对于现有数据库实例,如果纵向扩展存储空间,您可能会观察到一些输入/输出容量提高。您可以使用亚马逊云科技管理控制台、ModifyDBInstance API 或 modify-db-instance 命令扩展为数据库实例分配的存储容量。
有关更多信息,请参阅 Amazon RDS 的存储。
问:我的数据库实例在扩展期间是否一直可用?
可以在保持数据库实例可用性的同时增加分配给数据库实例的存储容量。不过,在决定缩减或扩展数据库实例可用的计算资源时,您的数据库将暂时不可用,同时数据库实例类将发生变化。此不可用期通常只持续几分钟,并将在数据库实例的维护时段内发生,除非您指定应立即应用修改。
问:我可以怎样扩展数据库实例,使其超过最大数据库实例类和最大存储容量?
Amazon RDS 支持各种数据库实例类和存储分配以满足不同的应用程序需求。如果您的应用程序所需的计算资源超过最大数据库实例类或所需存储超过最大分配量,您可以执行分区,将数据分布到多个数据库实例中。
问:什么是 Amazon RDS 通用型 (SSD) 存储?
Amazon RDS 通用型 (SSD) 存储适用于具有中等输入/输出要求的各种数据库工作负载。该存储选项基准为 3 IOPS/GB,可突增高达 3,000 IOPS,可提供可预测的性能,以满足大多数应用程序的需求。
问:什么是 Amazon RDS 预置 IOPS (SSD) 存储?
Amazon RDS 预置 IOPS (SSD) 存储是 SSD 型存储方案,旨在提供快速、可预测且一致的输入/输出性能。使用 Amazon RDS 预置 IOPS (SSD) 存储,您可以在创建数据库实例时指定 IOPS 费率,Amazon RDS 将在数据库实例的生命周期内预置 IOPS 费率。Amazon RDS 预置 IOPS (SSD) 存储针对输入/输出密集型、事务性 (OLTP) 数据库工作负载进行了优化。有关更多详细信息,请参阅 Amazon RDS 用户指南。
问:什么是 Amazon RDS 磁性存储?
Amazon RDS 磁性存储适用于数据访问频率较低的小型数据库工作负载。不建议对生产数据库实例使用磁性存储。
问:如何在众多的 Amazon RDS 存储类型中进行选择?
选择最适合您工作负载的存储类型。
- 高性能 OLTP 工作负载:Amazon RDS 预置 IOPS (SSD) 存储
- 具有适度输入/输出要求的数据库工作负载:Amazon RDS 通用型 (SSD) 存储
问:Amazon RDS 支持的最大和最小 IOPS 数量是多少?
Amazon RDS 支持的 IOPS 数量取决于数据库引擎。有关更多详细信息,请参阅 Amazon RDS 用户指南。
自动备份和数据库快照
问:自动备份和数据库快照之间有何差异?
Amazon RDS 提供了两种备份和还原数据库实例自动备份和数据库快照的不同方法。
Amazon RDS 的自动备份功能可实现数据库实例的时间点恢复。为数据库实例打开自动备份功能时,Amazon RDS 将自动对数据执行全天快照(在首选的备份时段期间)并捕获事务日志(如果对数据库实例进行了更新)。启动时间点恢复时,事务日志将应用到最合适的每日备份,以便将数据库实例还原到您请求的特定时间。Amazon RDS 可在用户指定的有限时间段(称为“保留期”,默认情况下是 7 天,但最长可以设置为 35 天)内保留数据库实例备份。在保留期内,您可以启动时间点还原并指定任何秒数,最多为最近可还原的时间。您可以使用 DescribeDBInstances API 以使其返回数据库实例的最近可还原时间,通常在最后五分钟以内。此外,您可以在亚马逊云科技管理控制台中选择数据库实例,并查看控制台下侧面板的“描述”选项卡,了解该数据库实例的最近可还原时间。
数据库快照由用户启动,可让您按所需的任意频率在已知状态备份数据库实例,然后随时还原到这种特定的状态。您可以使用亚马逊云科技管理控制台、CreateDBSnapshot API 或 create-db-snapshot 命令创建数据库快照,这些快照会一直保留,直到您明确将其删除。
您可以使用 Amazon RDS 为实现自动备份而创建的快照来进行复制(使用亚马逊云科技管理控制台或 copy-db-snapshot 命令)或用于快照还原功能。您可以使用“自动”快照类型来确定它们。此外,您可以查看“快照创建时间”字段来确定拍摄快照的时间。另外,“自动”快照的标识符中也包含快照拍摄的时间(UTC 形式)。
请注意:执行还原到某个时间点操作或从数据库快照执行还原操作时,将使用新的终端节点创建一个新数据库实例(如果需要,可以删除旧数据库实例)。这样,您便可以从特定数据库快照或时间点创建多个数据库实例。
问:我需要对数据库实例启用备份,还是它会自动启用?
默认情况下,Amazon RDS 可以在 7 天的保留期内自动进行数据库实例备份。免费备份存储仅限于预置的数据库容量,且只适用于有效的数据库实例。例如,如果您每月预置的数据库存储为 100GB,我们每月将免费提供 100GB 的备份存储。
如果您希望修改备份保留期,可以使用控制台或 CreateDBInstance API(创建新数据库实例时)或 ModifyDBInstance API(对于现有的实例)执行操作。您可以使用这些 API 将 RetentionPeriod 参数从 0(这将禁用自动备份)更改为所需天数的任意数字。如果数据库实例是只读副本的源,则无法将该值设置为 0。有关自动备份的更多信息,请参阅 Amazon RDS 用户指南。
问:什么是备份时段?为什么我需要使用它? 我的数据库在备份时段期间是否可用?
首选备份时段是用户定义的时间段,在该时间段内数据库实例将进行备份。Amazon RDS 借助这些定期数据备份以及事务日志,让您能够将数据库实例还原到保留期内的任何秒数,最多到最近可还原时间(通常在最后五分钟内)。在备份时段期间,存储 I/O 可能会在备份过程初始化时暂停(通常短于几秒),同时延迟可能会短暂性增加。由于备份在备用实例上进行,因此对于多可用区数据库部署,不会出现 I/O 暂停。
问:我的自动备份和数据库快照存储在哪里?如何管理它们的保留方式?
Amazon RDS 数据库快照和自动备份存储在 S3 中。
您可以使用亚马逊云科技管理控制台、ModifyDBInstance API 或 modify-db-instance 命令,通过修改 RetentionPeriod 参数来管理自动备份的保留时间段。如果希望关闭自动备份,可以通过将保留期设置为 0 来执行该操作(不建议)。您可以通过 Amazon RDS 控制台的“快照”部分管理用户创建的数据库快照。另外,您还可以使用 DescribeDBSnapshots API 或 describe-db-snapshots 命令查看用户针对指定数据库实例创建的数据库快照列表,并可使用 DeleteDBSnapshot API 或 delete-db-snapshot 命令删除快照。
问:我的自动数据库快照数量为什么多于数据库实例保留期间的天数?
自动数据库快照比保留期内的天数多 1 或 2 个是正常的。系统会额外保留一个自动快照,以确保能够执行到保留期内任何时间的时间点恢复。例如,如果您的备份时段设置为 1 天,您将需要 2 个自动快照才能支持到过去 24 小时内任何时间的恢复。此外,由于新的自动快照通常在旧的自动快照删除之前创建完成,您可能会看到一个额外的自动快照。
问:如果删除数据库实例,我的备份和数据库快照会怎么样?
删除数据库实例时,可以在删除时创建最终的数据库快照;这样做可以在以后使用此数据库快照恢复已删除的数据库实例。在删除数据库实例后,Amazon RDS 会将这个用户创建的最终数据库快照与所有其他手动创建的数据库快照一起保留。请参阅定价页面,了解备份存储成本的详细信息。
一旦删除数据库实例,自动备份也随之删除。在删除数据库实例后,只保留手动创建的数据库快照。
安全性
问:Amazon Virtual Private Cloud (VPC) 是什么?如何与 Amazon RDS 配合使用?
Amazon VPC 允许您在亚马逊云科技私有、隔离的部分创建虚拟网络环境,从中可以对私有 IP 地址范围、子网、路由表和网络网关等方面进行全面控制。借助 Amazon VPC,您可以定义虚拟网络拓扑和自定义网络配置,使其非常类似于您在自己的数据中心所操作的传统 IP 网络。
使用 VPC 的一个好处在于:您可以运行面向公众的 Web 应用程序,同时仍旧在私有子网中保持非公开访问的后端服务器。您可以为 Web 服务器创建一个可以访问 Internet 的公有子网,并将后端 RDS 数据库实例置于不能访问 Internet 的私有子网中。有关 Amazon VPC 的更多信息,请参阅 Amazon Virtual Private Cloud 用户指南。
问:在 VPC 内和在 EC2-Classic 平台(非 VPC)上使用 Amazon RDS 有何区别?
如果您的亚马逊云科技账户是在 2013-12-04 年之前创建的,那么您可以在 Amazon Elastic Compute Cloud (EC2)-Classic 环境中运行 Amazon RDS。无论使用 EC2-Classic 还是 EC2-VPC,Amazon RDS 的基本功能都是相同的。无论数据库实例部署在 VPC 内部还是外部,Amazon RDS 都能管理备份、软件修补、自动故障检测、只读副本和恢复。有关 EC2-Classic 和 EC2-VPC 之间区别的更多信息,请参阅 EC2 文档。
问:什么是数据库子网组?为什么我需要使用一个子网组?
数据库子网组是您希望为 VPC 中的 RDS 数据库实例委派的子网集合。对于给定区域中的每个可用区,每个数据库子网组应至少有一个子网。在 VPC 中创建数据库实例时,您需要选择数据库子网组。然后,Amazon RDS 使用该数据库子网组和您首选的可用区来选择子网以及该子网内的 IP 地址。Amazon RDS 创建弹性网络接口,并通过该 IP 地址将其关联到您的数据库实例。
请注意,我们强烈建议您使用 DNS 名称来连接数据库实例,因为基础 IP 地址可能会变化(例如,在故障转移时)。
对于多可用区部署,为区域中的所有可用区定义子网将允许 Amazon RDS 在需要时在另一个可用区创建新的备用区域。即使是单可用区部署,您也需要这样做,以防日后需要将它们转换为多可用区部署。
问:如何在 VPC 中创建 Amazon RDS 数据库实例?
有关引导您完成此流程的程序,请参阅《Amazon RDS 用户指南》中的在 VPC 中创建数据库实例。
问:如何控制对我的数据库实例的网络访问?
请访问《Amazon RDS 用户指南》的安全组部分,了解各种不同的数据库实例访问权限控制方法。
问:如何连接到 VPC 中的 RDS 数据库实例?
可以使用部署在同一 VPC 中的 EC2 实例访问 VPC 中部署的数据库实例。如果这些 EC2 实例部署在具有关联弹性 IP 的公有子网中,您可以通过互联网访问 EC2 实例。
对于 VPC 内部署的数据库实例,可通过 VPN 或您在公有子网中可以启动的堡垒主机,或使用 Amazon RDS 可公开访问选项从 VPC 外部的 EC2 实例进行访问。
- 要使用堡垒主机,您需要设置一个包含用作 SSH 堡垒的 EC2 实例的公有子网。该公有子网的互联网网关和路由规则必须允许通过 SSH 主机引导流量,然后必须将请求转发到 RDS 数据库实例的私有 IP 地址。
- 要使用公共连接,只需通过将可公开访问选项设置为“是”来创建数据库实例即可。可公开访问选项可用时,默认情况下,从您的 VPC 外部可实现对 VPC 内数据库实例的完全访问。
您也可以设置一个 VPN 网关,将公司网络扩展到 VPC,然后允许访问该 VPC 中的 RDS 数据库实例。有关更多详细信息,请参阅 Amazon VPC 用户指南。
我们强烈建议您使用 DNS 名称来连接数据库实例,因为基础 IP 地址可能会发生变化(例如,在故障转移时)。
问:是否可以将 VPC 外的现有数据库实例移到 VPC 内?
如果数据库实例未在 VPC 中,您可以使用亚马逊云科技管理控制台轻松将数据库实例移至 VPC 中。有关更多详细信息,请参阅 Amazon RDS 用户指南。您还可以对 VPC 外部的数据库实例拍摄快照,然后通过指定您要使用的数据库子网组,将其还原到 VPC。或者,您也可以执行“还原到时间点”操作。
问:是否可以将 VPC 内的现有数据库实例移到 VPC 外?
不支持将数据库实例从 VPC 内部迁移到外部。出于安全考虑,无法将 VPC 内数据库实例的数据库快照还原到 VPC 外部。同样,也无法执行“还原到时间点”功能。
问:要确保我的应用程序可以访问 VPC 中的数据库实例,我应该注意什么?
您需要负责修改 VPC 中的路由表和网络 ACL,以确保能够从 VPC 中的客户端实例访问您的数据库实例。
对于多可用区部署,故障转移后,您的客户端 EC2 实例和 RDS 数据库实例可能位于不同的可用区中。您应该配置网络 ACL 以确保实现跨可用区通信。
问:是否可以更改数据库实例的数据库子网组?
现有的数据库子网组可以进行更新,以便为现有可用区或创建数据库实例时添加的新可用区添加更多子网。如果实例在特定可用区中运行,而该可用区已经从子网组中删除,则从现有数据库子网组中删除子网可能导致实例不可用。有关更多信息,请参阅 Amazon RDS 用户指南。
问:什么是 Amazon RDS 主用户账户,它与亚马逊云科技账户有何不同?
要开始使用 Amazon RDS,您需要一个亚马逊云科技开发者账户。如果在注册 Amazon RDS 之前没有账户,则在开始注册过程时,系统会提示您创建一个账户。主用户账户与亚马逊云科技开发人员账户不同,它仅在 Amazon RDS 环境内使用,用来控制对您的数据库实例的访问。主用户账户是本机数据库用户账户,可用来连接数据库实例。在创建数据库实例时,您可以指定与每个数据库实例相关联的主用户账户和密码。创建数据库实例后,您可以使用主用户凭证连接到数据库。之后,您也可以创建其他用户账户,以便限制谁能访问您的数据库实例。
问:对于我的数据库实例,主用户将被授予什么特权?
对于 MySQL,主用户的默认特权包括:创建、退出、引用、事件、更改、删除、索引、插入、选择、更新、创建临时表、锁定表、触发、创建视图、显示视图、更改例程、创建例程、执行、触发、创建用户、处理、显示数据库、授予选项。
对于 Oracle,主用户将被授予“dba”角色。主用户将继承与该角色相关联的大部分特权。请参阅 Amazon RDS 用户指南,了解受限权限的列表以及执行可能需要这些权限的管理任务的相应替代方案。
对于 SQL Server,创建数据库的用户将被授予“db_owner”角色。请参阅 Amazon RDS 用户指南,了解受限权限的列表以及执行可能需要这些权限的管理任务的相应替代方案。
问:使用 Amazon RDS 进行用户管理是否有任何差异?
没有。一切都与您自己管理关系数据库时使用的熟悉方式相同。
问:我的数据中心服务器中运行的程序是否可以访问 Amazon RDS 数据库?
可以。您必须通过配置安全组专门打开此功能,以便通过 Internet 访问数据库。您只能授权对与自己数据中心中的服务器对应的特定 IP、IP 范围或子网的访问权限。
问:我可以使用 SSL/TLS 加密我的应用程序和数据库实例之间的连接吗?
是的,所有 Amazon RDS 引擎都支持此选项。
Amazon RDS 会为每个数据库实例生成一个 SSL/TLS 证书。建立加密连接后,在传输时将对数据库实例和应用程序之间传输的数据进行加密。
虽然 SSL 有安全优势,但应注意 SSL/TLS 加密操作需使用大量计算操作,可能会加大数据库连接延迟。Amazon RDS 中的 SSL/TLS 支持用来对应用程序和数据库实例之间的连接加密;不是应依赖于数据库实例本身的身份验证。
有关如何与 Amazon RDS 建立加密连接的详细信息,请访问 Amazon RDS 的 MySQL 用户指南、MariaDB 用户指南、SQL Server 用户指南、PostgreSQL 用户指南或 Oracle 用户指南。
问:我可以加密 Amazon RDS 数据库中的静态数据吗?
Amazon RDS 支持使用您使用 Amazon Management Service (KMS) 管理的密钥对所有数据库引擎进行静态加密。在通过 Amazon RDS 加密运行的数据库实例上,静态存储于底层存储的数据都将加密,自动备份、只读副本和快照也是如此。加密和解密操作的处理都是透明的。有关将 KMS 与 Amazon RDS 一起使用的更多信息,请参阅 Amazon RDS 用户指南。
您还可以对之前未加密的数据库实例或数据库集群进行加密,具体方法是创建数据库快照,然后创建此快照的副本并指定 KMS 加密密钥。之后,您就可从加密的快照还原加密的数据库实例或数据库集群。
Amazon RDS for Oracle 和 Amazon RDS for SQL Server 支持这些引擎的透明数据加密 (TDE) 技术。有关更多信息,请参阅《Amazon RDS 用户指南》中关于 Oracle 和 SQL Server 的部分。
问:我要如何控制我的系统和用户在特定 RDS 资源上可执行的操作?
您可以控制您的 Amazon IAM 用户和组在特定 RDS 资源上可执行的操作。您可以通过以下方法实现此目的:在您应用到用户和组的 Amazon IAM 策略中,引用相关的 RDS 资源。在 Amazon IAM 策略中可引用的 RDS 资源包括:数据库实例、数据库快照、只读副本、数据库安全组、数据库选项组、数据库参数组、事件订阅以及数据库子网组。此外,您还可以为这些资源添加标记,以便在资源中添加额外的元数据。通过使用标记,您可以对资源进行分类(例如“开发”数据库实例、“生产”数据库实例和“测试”数据库实例),并编写 Amazon IAM 策略,列出可对具有相同标签的资源执行的权限(即操作)。有关更多信息,请参阅管理 Amazon RDS 资源和数据库的访问权限和标记 Amazon RDS 资源。
问:我希望对我的 RDS 部署执行安全分析或操作问题排查。我能否获取在我的账户上发起的所有 RDS API 调用的历史记录?
可以。Amazon CloudTrail 是一项 Web 服务,用于记录账户的亚马逊云科技 API 调用,并向您发送日志文件。由 CloudTrail 生成的亚马逊云科技 API 调用历史记录可用于安全分析、资源变更跟踪以及合规性审计。在亚马逊云科技 CloudTrail 详细信息页面了解更多有关 CloudTrail 的信息,或者通过 CloudTrail 的亚马逊云科技管理控制台主页将它打开。
数据库配置
问:如何为我的数据库实例选择正确的配置参数?
默认情况下,Amazon RDS 会考虑实例类和存储容量,为数据库实例选择最优配置参数。但是,如果要进行更改,您可以使用亚马逊云科技管理控制台、Amazon RDS API 或亚马逊云科技命令行界面执行此操作。请注意,从推荐值更改配置参数可能会产生意想不到的影响,包括性能降低甚至是系统崩溃,只有愿意承担这些风险的高级用户才能尝试。
问:什么是数据库参数组? 它们有什么作用?
数据库参数组就像是引擎配置值“容器”,这些值可应用于一个或多个数据库实例。如果您在未指定数据库参数组的情况下创建数据库实例,则使用默认的数据库参数组。该默认组包含针对您运行的数据库实例进行优化的引擎默认值和 Amazon RDS 系统默认值。不过,如果希望数据库实例以您自定义的引擎配置值运行,可以轻松地创建一个新数据库参数组,修改所需的参数并修改数据库实例以使用新数据库参数组。建立关联后,使用特定数据库参数组的所有数据库实例都将获得该数据库参数组的所有参数更新。
有关配置数据库参数组的更多信息,请参阅 Amazon RDS 用户指南。
问:我应该如何监控 Amazon RDS 资源的配置?
您可以使用 Amazon Config 持续记录以下项的配置更改并通过 Amazon Simple Notification Service (SNS) 接收更改通知:Amazon RDS 数据库实例、数据库子网组、数据库快照、数据库安全组和事件订阅。您还可以创建 Amazon Config 规则来评估这些 RDS 资源是否具有所需的配置。
多可用区部署
问:以多可用区部署模式运行数据库实例意味着什么?
创建或修改数据库实例并以多可用区部署模式运行后,Amazon RDS 将自动在不同的可用区预置和维护同步“备用”副本。对数据库实例的更新将同步复制到可用区的备用副本中,以保持同步并保护最新的数据库更新,以防数据库实例出现故障。如果遇到特定类型的意外维护或很少出现的数据库实例故障或可用区故障,Amazon RDS 将自动故障转移到备用副本,以便在提示备用副本后尽快恢复数据库写入和读取操作。由于数据库实例的名称记录相同,所以应用程序无需手动管理干预即可恢复数据库操作。借助多可用区部署,您可以透明地进行复制:无需与备用副本交互,而且它不会用来服务于读取流量。有关多可用区部署的更多信息,请参阅 Amazon RDS 用户指南。
问:什么是可用区?
可用区是区域内的不同位置,旨在与其他可用区中的故障隔离。每个可用区在其独立的、物理上显著不同的基础设施中运行,并已设计为具备高可靠性。可用区之间不共用常见的故障点,如发电机和冷却设备等。此外,它们在物理上也是相互独立的,即使火灾、龙卷风或洪涝等极为罕见的灾难也只会影响单个可用区。位于同一区域的可用区网络连接延迟很低。
问:在多可用区部署环境中,“主”副本和“备用”副本指什么?
以多可用区部署模式运行数据库实例时,“主”副本服务于数据库写入和读取操作。此外,Amazon RDS 会在场景后预置和维护“备用”副本,它是主副本的最新副本。在故障转移情况下,备用系统会“提升”。故障转移后,备用副本将成为主副本,并接受数据库操作。在提升前的任何时候,无需与备用副本直接交互(例如,用于读取操作)。如果您有兴趣扩展读取流量,以突破单个数据库实例的流量限制,请参阅只读副本的相关常见问题。
问:多可用区部署有哪些优势?
以多可用区部署模式运行数据库实例的主要优势是可提高数据库的持久性和可用性。多可用区部署提供了增强的可用性和容错功能,这使其自然而然成为生产环境的理想之选。
在遇到罕见的数据库实例组件故障或某个可用区的可用性受损的情况时,以多可用区部署模式运行数据库实例可确保数据安全无虞。例如,如果主副本中的存储卷出现故障,Amazon RDS 将自动启动故障转移到备用副本,在此您的所有数据库更新完整无缺。相对于单一可用区的标准部署,这种方式提供更长的数据持久性,否则将需要用户启动还原操作且最近可还原时间(通常在最后五分钟内)之后进行的更新将不可用。
此外,以多可用区部署模式运行时,您还可获得增强数据库可用性的优势。如果发生可用区故障或数据库实例故障,可用性影响将仅限于完成自动故障转移的时间。多可用区部署的可用性优势还可延伸到计划的维护操作。例如,对于自动备份,由于从备用副本进行备份,所以在首选的备份时段期间不会再暂停主副本中的输入/输出活动。至于修补或数据库实例类扩展,这些操作在自动故障转移前会首先在备用副本执行。因此,可用性影响将限于完成自动故障转移所需的时间。
以多可用区部署模式运行数据库实例的另一潜在优势是,系统将自动执行数据库实例故障转移,无需进行管理。在 Amazon RDS 环境中,这意味着在可用区发生故障或数据库实例故障时,您无需监控数据库实例事件和启动手动恢复数据库实例(通过 RestoreDBInstanceToPointInTime 或 RestoreDBInstanceFromSnapshot API)。
问:以多可用区部署模式运行数据库实例是否会影响性能?
由于是代表您执行同步数据复制,您可能会发现,与单个可用区中的标准数据库实例部署相比延迟有所提高。
问:以多可用区部署模式运行数据库实例时,是否可使用备用副本来执行读取或写入操作?
不能,多可用区备用副本无法提供读取请求。多可用区部署旨在提升数据库的可用性和持久性,而不是读取扩缩优势。因此,该功能在主副本和备用副本之间采用同步复制。我们的实施可确保主副本和备用副本一直处于同步状态,但不能使用备用副本执行读取或写入操作。如果您对读取扩展解决方案感兴趣,请参阅只读副本的相关常见问题。
问:如何设置多可用区数据库实例部署?
要创建多可用区数据库实例部署,只需在使用亚马逊云科技管理控制台启动数据库实例时,单击“多可用区部署”的“是”选项。另外,如果您使用的是 Amazon RDS API,则可调用 CreateDBInstance API 并将“多可用区”参数的值设置为“true”。 要将现有的标准(单一可用区)数据库实例转换为多可用区,请在亚马逊云科技管理控制台中修改数据库实例,或使用 ModifyDBInstance API 并将“多可用区”参数的值设置为“true”。
问:当我将 RDS 实例从单可用区转换为多可用区时,会发生什么情况?
对于适用于 MySQL、MariaDB、PostgreSQL 和 Oracle 数据库引擎的 RDS,当您选择将 RDS 实例从单可用区转换为多可用区时,会发生以下情况:
- 拍摄主实例的快照
- 在不同的可用区,从该快照创建新的备用实例
- 在主实例和备用实例之间配置同步复制
因此,在实例从单可用区转换为多可用区时,不会出现停机。但是,当备用数据被捕获与主数据匹配时,您可能会看到延迟增加。
问:哪些事件会导致 Amazon RDS 将故障转移启动到备用副本?
Amazon RDS 可检测多可用区部署中最常见的故障并自动从中恢复过来,这样您可在无管理干预的情况下尽快恢复数据库操作。如果发生以下任何一种情况,Amazon RDS 将自动执行故障转移:
- 主可用区的可用性受损
- 主可用区的网络连接受损
- 主可用区的计算设备出现故障
- 主可用区的存储出现故障
注意:为了提高可用性,对多可用区部署启动诸如数据库实例扩展或系统升级(如操作系统安装补丁程序)之类的操作时,这些操作首先会应用于备用副本,之后才自动进行故障转移。因此,可用性影响将仅限于完成自动故障转移所需的时间。请注意,Amazon RDS 多可用区部署不会自动故障转移来响应某些数据库操作,如长时间运行查询、死锁或数据库崩溃错误。
问:执行自动故障转移时,我是否会收到提醒?
会,Amazon RDS 将发出数据库实例事件,以通知您系统已执行自动故障转移。您可以单击 Amazon RDS 控制台的“事件”部分或使用 DescribeEvents API 返回数据库实例相关事件的相关信息。发生特定数据库事件时,您还可以通过 Amazon RDS 事件通知获取通知。
问:执行多可用区故障转移时会发生什么状况?这种状况会持续多长时间?
Amazon RDS 将自动处理故障转移,以便尽快恢复数据库操作而无需管理干预。故障转移后,Amazon RDS 会轻松翻转数据库实例的别名记录 (CNAME) 以指向备用副本,备用副本转而成为新的主副本。我们鼓励您遵循最佳做法,在应用程序层实施数据库连接重试。
故障转移(即从在主副本上检测到故障到在备用副本上继续事务间隔的时间)通常在一至两分钟内完成。故障转移时间也会受是否必须还原大型未提交事务这一因素的影响;为获得最佳效果,建议对多可用区使用足够大的实例类型。亚马逊云科技还建议对多可用区实例使用预置 IOPS,以获得快速、可预测且一致的吞吐量性能。
问:是否可以对多可用区数据库实例部署启动“强制故障转移”?
在各种故障条件下,Amazon RDS 会自动进行故障转移,无需用户操作。此外,Amazon RDS 会在重新引导实例时提供启动故障转移的选项。您可以通过亚马逊云科技管理控制台或调用 RebootDBInstance API 来访问此功能。
问:如何控制/配置多可用区同步复制?
要采用多可用区部署,只需将“多可用区”参数设置为“true”即可。创建备用副本、同步复制和故障转移都将自动进行。这意味着,无法选择部署备用副本的可用区或更改可用的备用副本数(Amazon RDS 会为每个数据库实例主副本预置一个专用的备用副本)。备用副本还不可以配置为接受数据库读取活动。
问:备用副本与主副本可以位于同一区域吗?
可以。您的备用将自动配置在与数据库实例主实例所在区域的不同可用区中。
问:我能看到我的主实例当前位于哪个可用区域吗?
可以。您可以使用亚马逊云科技管理控制台或 DescribeDBInstances API 查看当前主实例的位置。
问:故障转移后,我的主实例现在与我的其他亚马逊云科技资源(例如 EC2 实例)位于不同的可用区。我是否需要考虑延迟?
可用区旨在向同一区域的其他可用区提供低延迟网络连接。此外,您可能需要考虑以跨多个可用区的冗余架构应用程序及其他亚马逊云科技资源,以便在出现可用区故障时应用程序能够恢复。多可用区部署可满足数据库层的此项需求,而无需用户干预管理。
问:如何在多可用区部署中使用数据库快照和自动备份?
您可以按照在单可用区或多可用区部署中运行标准部署的相同方式与自动备份和数据库快照功能交互。如果您正在运行多可用区部署,将自动从备用副本执行自动备份和数据库快照,以免主副本中的 I/O 暂停。请注意,对于单可用区和多可用区部署,在备份期间,您都可能会经历更长时间的 I/O 延迟(一般持续几分钟)。
多可用区部署与标准部署、单一可用区部署的还原操作启动方式也完全相同(时间点还原或从数据库快照还原)。您可以使用 RestoreDBInstanceFromSnapshot 或 RestoreDBInstanceToPointInTime API 创建新数据库实例部署。无论在标准部署还是多可用区部署中启动源备份,这些新数据库实例部署都可能是标准或多可用区模式。
只读副本
问:以只读副本方式运行数据库实例意味着什么?
借助只读副本,用户能够轻松地利用受支持引擎的内置复制功能灵活扩展并超越单一数据库实例的容量限制,以处理大量读取数据库工作负载。在亚马逊云科技管理控制台中单击几下鼠标或使用 CreateDBInstanceReadReplica API 即可创建只读副本。创建只读副本后,将使用受支持引擎的本机异步复制功能来复制源数据库实例上的数据库更新。您可以为给定的源数据库实例创建多个只读副本,并在它们当中分配应用程序的读取流量。
由于只读副本利用受支持引擎的内置复制功能,所以它们受其优势和局限约束。特别是,对源数据库实例进行更新后,更新会应用到只读副本,但复制滞后性可能会有很大差别。可以将只读副本与多可用区部署关联起来,从而获得读取扩展优势,同时实现多可用区部署提供的增强的数据库写入可用性和数据持久性。
问:何时应考虑使用 Amazon RDS 只读副本?
在很多情况下,为给定的源数据库实例部署一个或多个只读副本可能比较明智。部署只读副本的常见原因包括:
- 扩展用于执行大量读取数据库工作负载的单一数据库实例的计算资源或 I/O 容量。这种多余的读取流量可以定向到一个或多个只读副本。
- 当源数据库实例不可用时,为读取流量提供服务。如果您的源数据库实例无法处理输入/输出请求(例如,由于备份或计划维护而暂停输入/输出),可以将读取流量引导到只读副本。对于这种使用案例,请注意由于源数据库实例不可用,只读副本中的数据可能处于“静态”。
- 业务报告或数据仓库方案;您可能希望对只读副本运行业务报告查询,而不是针对主生产数据库实例运行。
- 您可以使用只读副本对源数据库实例进行灾难恢复,无论是在同一区域还是在不同区域中。
问:我是否需要在可以创建只读副本之前启用数据库实例的自动备份?
是。将备份保留期设置为 0 以外的任何值,以此在添加只读副本之前启用源数据库实例的自动备份。要使只读副本能够运行,必须保持备份的启用状态。
问:哪种版本的数据库引擎支持 Amazon RDS 只读副本?
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 数据库企业版“自带许可”模型的所有 12.2 版本,并获得了 Active Data Guard 选项许可的许可证。
Amazon RDS for SQL Server:当底层复制技术为 SQL Server 版本 2016、2017 和 2019 年使用“Always On 可用性组”时,企业版在多可用区配置中支持只读副本。
问:如何为指定的数据库实例部署只读副本?
只需使用标准的 CreateDBInstanceReadReplica API 或在亚马逊云科技管理控制台上单击几下,即可在数分钟内创建只读副本。创建只读副本后,可以通过指定 SourceDBInstanceIdentifier 将其标识为只读副本。SourceDBInstanceIdentifier 是您要复制的“源”数据库实例的数据库实例标识符。同标准数据库实例一样,您也可以指定可用区、数据库实例类和首选维护时段。只读副本的引擎版本(例如,PostgreSQL 9.3.5)和存储分配均继承自源数据库实例。启动创建只读副本时,Amazon RDS 将对源数据库实例拍摄快照,并开始复制。因此,在拍摄快照时,您的源数据库实例上的输入/输出可能会短暂性停止。通常,输入/输出暂停会按顺序持续一分钟时间;如果源数据库实例为多可用区部署模式,则可以避免这种状况(对于多可用区部署,从备用副本拍摄快照)。此外,Amazon RDS 当前正在进行优化(很快就会发布),因此如果您在一个 30 分钟的时间段内创建多个只读副本,所有副本都将使用相同的源快照以降低输入/输出影响(每个只读副本将在创建后开始“跟进”复制)。
问:如何连接到我的只读副本?
您可以像连接标准数据库实例一样,使用 DescribeDBInstance API 或亚马逊云科技管理控制台通过检索只读副本的终端节点连接到只读副本。如果有多个只读副本,各个副本之间的读取流量分配方式则取决于应用程序。
问:我可以为给定的源数据库实例创建多少个只读副本?
借助 Amazon RDS for MySQL、MariaDB、PostgreSQL、Oracle 和 SQL Server,您最多可为给定的源数据库实例创建 5 个只读副本。
问:我能否在不同于源数据库实例的亚马逊云科技区域中创建只读副本?
是的,Amazon RDS(RDS for SQL Server 除外)支持跨区域只读副本。从数据写入源数据库实例到只读副本中可用的时间长度将取决于两个区域之间的网络延迟。
问:Amazon RDS 只读副本是否支持同步复制?
不支持。Amazon RDS for MySQL、MariaDB、PostgreSQL、Oracle 和 SQL Server 中的只读副本使用这些引擎的本机异步复制执行。Amazon Aurora 使用不同但仍然是异步的复制机制。
问:我能否使用只读副本来增强数据库写入可用性或保护源数据库实例中的数据以防出现故障?
如果您希望使用复制功能来提高数据库写入可用性并保护最近的数据库更新免受各种故障情况的影响,我们建议您将数据库实例作为多可用区部署运行。借助采用支持引擎本机异步复制的 Amazon RDS 只读副本,只读副本会在源数据库实例中执行数据库写入操作后也发生数据库写入,而且这种复制“滞后性”可能存在很大差别。相比之下,多可用区部署采用的副本属于同步复制,意味着主副本和备用副本上的数据库写入会并发执行。这样可保护最新的数据库更新,因为在出现故障转移时,它们需要在备用副本中可用。此外,使用多可用区部署,可完全托管复制操作。Amazon RDS 将自动监控数据库实例故障状况或可用区故障,并且如果发生中断,将自动故障转移到备用实例(如果使用 Amazon Aurora,则故障转移到备用只读副本)。
问:是否可以通过多可用区部署数据库实例创建只读副本作为源?
可以。由于多可用区数据库实例与只读副本解决的需求不同,所以在生产部署中可以结合两者,将只读副本与多可用区数据库实例部署关联起来。“源”多可用区数据库实例为您提供了增强的写入可用性和数据持久性,相关的只读副本将提高读取流量的可扩展性。
问:我能否通过配置将我的 Amazon RDS 只读副本本身放入多可用区?
可以。Amazon RDS for MySQL、MariaDB、PostgreSQL 和 Oracle 支持只读副本放入多可用区配置,以便支持灾难恢复并尽量缩短引擎升级产生的停机时间。
问:如果我的只读副本使用多可用区部署的数据库实例作为源,在发生多可用区故障转移时,会出现什么状况?
对于多可用区故障转移,所有关联和可用的只读副本在故障转移完成后将自动恢复复制(获取最新提升的主副本的更新)。
问:是否可以为其他只读副本创建只读副本?
Amazon Aurora、Amazon RDS for MySQL 和 Amazon RDS for MariaDB:您可利用现有的第一级只读副本创建第二级只读副本。通过创建第二级只读副本,您可以将一部分的复制负载从主数据库实例转移到第一级只读副本。请注意,由于事务从主副本复制到第一层副本,然后再复制到第二层副本,导致了额外的复制延迟,第二层只读副本可能会进一步落后于主副本。
Amazon RDS for PostgreSQL、Oracle 和 SQL Server:目前不支持为只读副本创建只读副本。
问:我的只读副本能仅接受数据库读取操作吗?
只读副本旨在服务于读取流量。不过,在某些使用案例中,高级用户可能希望针对只读副本完成数据定义语言 (DDL) SQL 语句。例如,这些情况可能包括向用于业务报告的只读副本添加数据库索引,而不向对应的源数据库实例添加相同的索引。
可以将 Amazon RDS for MySQL 配置为允许针对只读副本执行 DDL SQL 语句。如果希望启用读取给定只读副本之外的操作,则需要修改该只读副本的有效数据库参数组,将“read_only”参数设置为“0”。
Amazon RDS for PostgreSQL 目前不支持针对只读副本执行 DDL SQL 语句。
问:我是否可以将只读副本提升为“独立”数据库实例?
可以。有关更多详细信息,请参阅 Amazon RDS 用户指南。
问:只读副本是否会与其源数据库实例一起保持最新状态?
对源数据库实例的更新将自动复制到任何关联的只读副本。不过,鉴于支持引擎的异步复制技术,出于各种原因,只读副本更新可能会落后于源数据库实例。常见的原因包括:
- 对源数据库实例的写入输入/输出卷超过了可以对只读副本应用更改的速率(如果只读副本的计算容量低于源数据库实例,则尤其可能出现此问题)
- 源数据库实例复杂或长时间运行的事务拦截复制只读副本
- 源数据库实例和只读副本之间有网络分区或延迟
只读副本会受到支持的引擎本机复制的优点和弱点影响。如果您使用的是只读副本,则应该意识到只读副本与其源数据库实例之间存在滞后的可能性,或者“不一致”。
问:如何查看我的有效只读副本状态?
您可以使用标准 DescribeDBInstances API 返回已部署的所有数据库实例的列表(包括只读副本),或者直接单击 Amazon RDS 控制台的“实例”选项卡进行查看。
通过 Amazon RDS,您可以看到只读副本的更新落后其源数据库实例多远。只读副本更新落后主实例的那几秒被公布为 Amazon CloudWatch 指标(“副本滞后”),可通过亚马逊云科技管理控制台或 Amazon CloudWatch API 提供。对于 Amazon RDS for MySQL,此信息来源与发出只读副本标准的“显示从服务器状态”MySQL 命令后显示的信息相同。对于 Amazon RDS for PostgreSQL,您可以使用源数据库实例上的 pg_stat_replication 视图探索复制指标。
Amazon RDS 将监控只读副本的复制状态,如果由于任何原因停止复制(例如,如果在与主数据库实例上的更新相冲突的副本上运行 DML 查询,可能会导致复制错误),Amazon RDS 会在亚马逊云科技管理控制台中将“复制状态”字段更新为“错误”。您可以通过查看“复制错误”字段来查看 MySQL 引擎产生的相关错误的详细信息,然后进行适当操作以对其进行恢复。您可以在 Amazon RDS for MySQL 或 PostgreSQL 用户指南的 “只读副本问题的故障排除”部分了解有关对复制问题进行故障排除的更多信息。
如果复制错误得到修复,“复制状态”将更改为“复制中”。
问:我扩展了源数据库实例的计算和/或存储容量。我是否也应该扩展关联的只读副本的资源?
为了有效进行复制,我们建议只读副本具有与其各自的源数据库实例相同或比之更多的计算和存储资源。否则,复制滞后可能会加大或者只读副本可能会用完存储副本更新的空间。
问:如何删除只读副本? 如果其源数据库实例被删除,它会自动删除吗?
您在亚马逊云科技管理控制台中单击几下鼠标或将数据库实例标识符传送到 DeleteDBInstance API,即可轻松地删除只读副本。
即使在已删除相应的源数据库实例后,Amazon Aurora 副本仍然保持有效并可继续接受读取流量。集群中的其中一个副本将自动被提升为新的主副本,并开始接受写入流量。
即使在已删除相应的源数据库实例后,Amazon RDS for MySQL 或 MariaDB 只读副本仍然保持有效并可继续接受读取流量。如果您需要同时删除只读副本和源数据库实例,则必须使用 DeleteDBInstance API 或亚马逊云科技管理控制台明确执行此操作。
如果您删除了一个具有只读副本的 Amazon RDS for PostgreSQL 数据库实例,则所有的只读副本都将被提升为独立的数据库实例,并将能够接受读取和写入流量。新升级的数据库实例将彼此独立运行。如果您需要同时删除这些数据库实例和源数据库实例,则必须使用 DeleteDBInstance API 或亚马逊云科技管理控制台明确执行此操作。
问:只读副本的成本是多少? 如何计算账单周期?
只读副本按标准数据库实例进行计费,且费率相同。如同标准数据库实例,只读副本的每“数据库实例小时”费用取决于只读副本的数据库实例类 – 有关最新的定价信息,请参阅定价页面。您无需支付在同一亚马逊云科技区域内的源数据库实例和只读副本之间复制数据时产生的数据传输费用。
只读副本的账单周期从成功创建副本后开始(即当列出的状态为“有效”时)。只读副本将继续按标准 Amazon RDS 数据库实例小时费率计费,直到您发布命令将其删除为止。
增强监控
问:什么是 RDS 的增强监控?
借助 RDS 增强监控,您可以更深入地了解 RDS 实例的运行状况。只需为您的 RDS 数据库实例启用“增强监控”选项并设置粒度,增强监控就会按照定义的粒度收集重要的操作系统指标和进程信息。
要获得更深层次的数据库负载诊断和可视化以及更长的数据留存期,您可以尝试性能详情。
问:我可以在增强监控中监控哪些指标和进程?
增强监控能够捕获 RDS 实例的系统级指标,如 CPU、内存、文件系统和磁盘输入/输出等。可在文档中找到指标的完整列表。
问:增强监控支持哪些引擎?
增强监控支持所有 RDS 数据库引擎。
问:增强监控支持哪些实例类型?
增强监控支持除 t1.micro 和 m1.small 以外的所有实例类型。该软件占用少量 CPU、内存和输入/输出即可实现常规监控;对于中型或大型实例,我们建议切换至更高的粒度。对于非生产数据库实例,增强监控的默认设置是“关”,您可以选择让其保持禁用状态,也可以在启用时修改粒度。
问:我可以在 RDS 控制面板上查看哪些信息?
您可以在控制台上以图表形式查看有关 RDS 数据库实例的所有系统指标和进程信息。您可以管理要监控每个实例的指标,并根据自己的要求自定义控制面板。
问:我的 RDS 账户中的所有实例都会采用相同的粒度样本指标吗?
不会。您可以为 RDS 账户中的每个数据库实例设置不同的粒度。您还可以选择要为其启用增强监控的实例,并随时修改任何实例的粒度。
问:我能够在 RDS 控制台上查看多久之前的历史指标?
根据自己的设置,您可以查看最长 1 小时前的所有指标的性能值,以及最长 1 秒前的粒度指标。
问:如何可视化 CloudWatch 中由 RDS 增强监控生成的指标?
RDS 增强监控中的指标将传送到您的 CloudWatch Logs 账户中。您可以基于 CloudWatch Logs 在 CloudWatch 中创建指标筛选器,并在 CloudWatch 控制面板上显示相关图表。有关更多详细信息,请访问 Amazon CloudWatch 页面。
问:何时应使用 CloudWatch 而不是 RDS 控制台控制面板?
如果 RDS 控制台控制面板上未显示您要查看的历史数据,则应使用 CloudWatch。您可以在 CloudWatch 中监控 RDS 实例,以诊断整个亚马逊云科技堆栈在单一位置上的运行状况。目前,CloudWatch 支持长达 1 分钟的粒度,对于小于该值的粒度,这些值将被平均计算。
问:我能否基于特定指标设置警报和通知?
可以。您可以在 CloudWatch 中创建警报,以在警报状态更改时发送通知。警报按指定的时间段监控单个指标,并根据相对于指定阈值的指标值每隔若干个时间段执行一项或多项操作。有关 CloudWatch 警报的更多详细信息,请参阅 Amazon CloudWatch 用户指南。
问:如何将增强监控与我当前使用的工具集成?
RDS 增强监控提供了一系列将以 JSON 有效负载形式发送到您的 CloudWatch Logs 账户的指标。JSON 有效负载会按照上次为 RDS 实例配置的粒度进行发送。
您可以通过第三方控制面板或应用程序以两种方式使用这些指标。监控工具可以使用 CloudWatch Logs 订阅为指标设置接近实时的源。另外,您可以使用 CloudWatch Logs 中的筛选器将指标桥接到 CloudWatch,并将您的应用程序与 CloudWatch 集成。有关更多详细信息,请参阅 Amazon CloudWatch 文档。
问:如何删除历史数据?
增强监控会将 JSON 有效负载发送到您的 CloudWatch Logs 账户中的某个日志中,因此您可以像对待其他 CloudWatch Logs 流一样控制其保留期。增强监控在 CloudWatch Logs 中配置的默认保留期是 30 天。
问:增强监控对我的月度账单有什么影响?
由于指标会发送至 CloudWatch Logs,在超出 CloudWatch Logs 免费套餐后,您需要支付的费用将基于 CloudWatch Logs 数据传输和存储费率进行计算。您可以单击此处,了解定价详情。RDS 实例的信息传输量与增强监控功能的定义粒度呈正比。管理员可以为账户中的不同实例设置不同的粒度以管理成本。
由增强监控针对一个实例发送到 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 代理是一项完全托管式、高度可用的数据库代理功能,适用于 Amazon RDS。RDS 代理使应用程序的可扩展性更好、对数据库故障的弹性更强,更安全。
问:我为什么要使用 Amazon RDS 代理?
Amazon RDS 代理是 Amazon RDS 的一项完全托管式、高度可用且易于使用的数据库代理功能,它使您的应用程序能够:1) 通过共享数据库连接来提高可扩展性;2) 将数据库故障转移时间减少 66% 并保留应用程序,从而提高可用性故障转移期间的连接;3) 选择性地对数据库实施 Amazon IAM 身份验证,并在 Amazon Secret Manager 中安全地存储凭证,从而提高安全性。
问:Amazon RDS 代理适用于处理哪些使用案例?
Amazon RDS 代理解决了许多与应用程序的可扩展性、可用性和安全性相关的使用案例,包括:
具有不可预测工作负载的应用程序:支持高度可变工作负载的应用程序可能会尝试打开大量新的数据库连接。Amazon RDS 代理的连接管理使您能够通过高效地重复使用数据库连接来优雅地扩展应用程序,以处理不可预测的工作负载。首先,RDS 代理会启用多个应用程序连接来共享数据库连接,以便有效地使用数据库资源。其次,通过调节打开的数据库连接的总数,RDS 代理还使您能够保持可预测的数据库性能。再次,RDS 代理将删除无法满足以保持应用程序的整体性能和可用性的请求。
经常打开和关闭数据库连接的应用程序:基于无服务器、PHP 或 Ruby on Rails 等技术构建的应用程序可能会频繁打开和关闭数据库连接,以满足应用程序请求。Amazon RDS 代理会维护一个数据库连接池,以避免在建立新连接时对数据库计算和内存造成不必要的压力。
保持连接开放但空闲的应用程序:SaaS 或电子商务等行业的应用程序可能会使数据库连接保持空闲状态,以最大限度地缩短客户复活时的响应时间。您可以使用 Amazon RDS 代理保存空闲连接,同时仅根据需要建立数据库连接,以优化活动请求,而不是通过过度调配数据库来支持主要空闲连接。
经历临时故障需要可用性的应用程序:借助 Amazon RDS 代理,您可以构建能够透明地容忍数据库故障的应用程序,而无需编写复杂的故障处理代码。RDS 代理会自动将流量路由到新的数据库实例,同时保留应用程序连接RDS 代理还会绕过域名系统 (DNS) 缓存,将 RDS 和 Aurora 多可用区数据库的故障转移时间缩短多达 66%。在数据库故障转移期间,应用程序可能会遇到延迟增加的情况,可能必须重试正在进行的事务。
得到提升的安全性和集中式凭证管理:Amazon RDS 代理允许您选择使用关系数据库实施基于 IAM 的身份验证,从而帮助您构建更安全的应用程序。RDS 代理还使您能够通过 Amazon Secret Manager 集中管理数据库凭证。
问:我应该什么时候直接连接到数据库而不是使用 Amazon RDS 代理?
根据您的工作负载,Amazon RDS 代理将为查询或事务响应时间增加平均 5 毫秒的网络延迟。如果您的应用程序无法容忍 5 毫秒的延迟,或者不需要 RDS 代理启用的连接管理和其他功能,则可以选择让应用程序直接连接到数据库终端节点。
问:无服务器应用程序将如何从 Amazon RDS 代理中受益?
Amazon RDS 代理转变了构建现代无服务器应用程序的方法,这些应用程序利用了关系数据库的强大功能和简单操作的优势。首先,RDS 代理会通过池化和重复使用数据库连接,使无服务器应用程序能够有效地扩展。其次,使用 RDS 代理,您便无需再处理 Lambda 代码中的数据库凭证。您可以使用与 Lambda 函数关联的 IAM 执行角色对 RDS 代理和数据库进行身份验证。再次,您无需管理任何新的基础架构或代码,即可充分发挥由关系数据库支持的无服务器应用程序的潜力。RDS 代理是完全托管式的,并会根据您的应用程序需求自动扩展其容量。
问:Amazon RDS 代理支持哪些数据库引擎?
Amazon RDS 代理预览版适用于具有 MySQL 兼容性的 Amazon Aurora 和 Amazon RDS for MySQL。对其他数据库引擎的支持即将推出。
问:如何启用 Amazon RDS 代理?
只需在 RDS 控制台中单击几下,即可为 RDS 数据库启用 Amazon RDS 代理。启用 RDS 代理时,您可以指定要从中访问 RDS 代理的 VPC 和子网。作为 Lambda 用户,您可以为 RDS 数据库启用 RDS 代理并设置 Lambda 函数来访问它,只需在 Lambda 控制台中单击几下即可访问。您可以在 Amazon RDS 用户指南中了解有关入门的更多信息。
问:我可以使用 API 访问 Amazon RDS 代理吗?
可以。您可以使用 Amazon RDS 代理 API 创建代理,然后定义目标组以将代理与特定的数据库实例或群集关联起来。示例:
amazon rds create-db-proxy
--db-proxy-name '…'
--engine-family <mysql|postgresql>
--auth [{}, {}]
--role-arn '…'
--subnet-ids {}
--require-tls <true|false>
--tags {}
amazon rds register-db-proxy-targets
--target-group-name '…'
--db-cluster-identifier '…'
--db-instance-identifier '…'
Trusted Language Extensions for PostgreSQL
问:为何要使用 Trusted Language Extensions for PostgreSQL?
Trusted Language Extensions (TLE) for PostgreSQL 使开发人员能够构建高性能 PostgreSQL 扩展,并在 Amazon Aurora 和 Amazon RDS 上安全地运行它们。这样,TLE 可以缩短您的上市时间,无需数据库管理员认证用于生产数据库工作负载的自定义代码和第三方代码。一旦您确定某个扩展能够满足您的需求,您就可以开始使用它。通过 TLE,独立软件供应商(ISV)可以向在 Aurora 和 Amazon RDS 上运行的客户提供新的 PostgreSQL 扩展。
问:在 PostgreSQL 中运行扩展的传统风险有哪些?TLE for PostgreSQL 是如何缓解这些风险的?
PostgreSQL 扩展在同一个进程空间中执行,以实现高性能。但是,扩展可能存在软件缺陷,从而导致数据库崩溃。
TLE for PostgreSQL 提供了多层保护来缓解这种风险。TLE 能够限制对系统资源的访问。rds_superuser 角色可以决定谁有权安装特定的扩展。但是,这些更改只能通过 TLE API 进行。TLE 能够将扩展缺陷的影响限制在单个数据库连接的范围内。除了这些保障措施外,TLE 还能够为 rds_superuser 角色的数据库管理员提供对谁可以安装扩展的精细在线控制,并让他们可以创建运行扩展的权限模型。只有具有足够权限的用户才能在 TLE 扩展上使用“CREATE EXTENSION”命令运行和创建。数据库管理员还可以允许会修改数据库内部行为且通常需要提升权限的更复杂扩展所需的“PostgreSQL 挂钩”。
问:TLE for PostgreSQL 如何与其他亚马逊云科技服务建立联系/结合使用?
TLE for PostgreSQL 可用于 Amazon Aurora PostgreSQL 兼容版和 Amazon RDS on PostgreSQL 版本 14.5 及更高版本。TLE 本身作为 PostgreSQL 扩展实现,类似于 Aurora 和 Amazon RDS 上支持的其他扩展,您可以通过 rds_superuser 角色激活它。
问:我可以在哪些版本的 PostgreSQL 中运行 TLE for PostgreSQL?
您可以在 Amazon Aurora 和 Amazon RDS 中的 PostgreSQL 14.5 或更高版本中运行 TLE for PostgreSQL。
问:Trusted Language Extensions for PostgreSQL 在哪些区域可用?
TLE for PostgreSQL 现已在所有亚马逊云科技区域推出,其中包括由光环新网运营的亚马逊云科技中国(北京)区域和由西云数据运营的亚马逊云科技中国(宁夏)区域。
问:运行 TLE 的成本是多少?
Aurora 和 Amazon RDS 客户可以免费使用 TLE for PostgreSQL。
问:TLE for PostgreSQL 与当前 Amazon Aurora 和 Amazon RDS 上提供的扩展有何不同?
Aurora 和 Amazon RDS 支持一组数量超过 85 个的精选 PostgreSQL 扩展。亚马逊云科技根据亚马逊云科技责任共担模式管理其中每个扩展的安全风险。这一组扩展中包含实现 TLE for PostgreSQL 的扩展。您编写的扩展或从第三方源获取并安装在 TLE 中的扩展将被视为应用程序代码的组成部分。您需要对使用 TLE 扩展的应用程序的安全性负责。
问:我可以使用 TLE for PostgreSQL 运行哪些扩展?可以举一些示例吗?
您可以构建开发者功能,如位图压缩和差分隐私(如可公开访问但保护个人隐私的统计查询)。
问:我可以使用哪些编程语言来开发 TLE for PostgreSQL?
TLE for PostgreSQL 目前支持 JavaScript、PL/pgSQL、Perl 和 SQL。
问:如何部署 TLE for PostgreSQL 扩展?
一旦 rds_superuser 角色激活了 TLE for PostgreSQL,您就可以使用 SQL CREATE EXTENSION 命令从任何 PostgreSQL 客户端(如 psql)部署 TLE 扩展。这类似于创建用过程语言(如 PL/pgSQL 或 PL/Perl)编写的用户定义函数的方式。您可以控制哪些用户有权部署 TLE 扩展和使用特定扩展。
问:TLE for PostgreSQL 如何与 PostgreSQL 数据库通信?
TLE for PostgreSQL 只能通过 TLE API 访问 PostgreSQL 数据库。TLE 支持的可信语言包括 PostgreSQL 服务器编程接口(SPI)的所有函数和对 PostgreSQL 挂钩的支持,包括检查密码挂钩。
问:在哪里可以了解有关 TLE for PostgreSQL 开源项目的更多信息?
您可以在 TLE GitHub 官方页面上了解有关 TLE for PostgreSQL 项目的更多信息。
Amazon RDS 蓝绿部署
问:哪些引擎支持 Amazon RDS 蓝绿部署?
Amazon RDS 蓝绿部署可用于 Amazon Aurora MySQL 兼容版、Amazon RDS for MySQL 和 Amazon RDS for MariaDB。
问:Amazon RDS 蓝绿部署支持哪些版本?
Amazon RDS 蓝绿部署可用于 Amazon Aurora MySQL 兼容版 5.6 及更高版本、RDS for MySQL 5.7 及更高版本,以及 RDS for MariaDB 10.2 及更高版本。有关可用版本的更多信息,请参阅 Aurora、RDS for MySQL 和 RDS for MariaDB 文档。
问:Amazon RDS 蓝绿部署支持哪些区域?
Amazon RDS 蓝绿部署现已在所有亚马逊云科技区域推出,其中包括由光环新网运营的亚马逊云科技中国(北京)区域和由西云数据运营的亚马逊云科技中国(宁夏)区域。
问:使用 Amazon RDS 蓝绿部署的成本是多少?
在绿色实例上运行工作负载的价格与在蓝色实例上运行工作负载的价格相同。在蓝色和绿色实例上运行的成本包括我们对 db.instance 当前的标准定价、存储成本、读/写 I/O 成本,以及任何已启用功能的成本,如备份和 Amazon RDS 性能详情的成本。实际上,在蓝绿部署的生命周期内,您支付的费用大约是在 db.instance 上运行工作负载的成本的 2 倍。
例如:您有一个 RDS for MySQL 5.7 数据库在采用多可用区(MAZ)配置的亚马逊云科技中国(宁夏)区域的两个 r5.2xlarge db.instance(一个主数据库实例和一个只读副本)上运行。每个 r5.2xlarge db.instance 都配置了 20 GiB 通用 Amazon Elastic Block Storage(EBS)。您使用 Amazon RDS 蓝绿部署创建蓝色实例拓扑的克隆,运行 15 天(360 小时),然后在成功切换后删除蓝色实例。以按需费率 13.34 元/小时(实例 + EBS 成本)计算,15 天的蓝色实例的成本为 4802.85 元。在这 15 天内,使用蓝绿部署的总成本为 9605.7 元,即该时间段内运行蓝色实例成本的 2 倍。
问:使用 Amazon RDS 蓝绿部署可以带来哪些变化?
Amazon RDS 蓝绿部署可帮助您更安全、更简单、更快速地进行数据库更改,如进行主要或次要版本升级、架构更改、实例扩缩、引擎参数更改和维护更新。
问:Amazon RDS 蓝绿部署中的“蓝色环境”是什么? “绿色环境”是什么?
在 Amazon RDS 蓝绿部署中,蓝色环境是您当前的生产环境。绿色环境是您的模拟环境,它将在切换后成为您的新生产环境。
问:Amazon RDS 蓝绿部署的切换是如何进行的?
当 Amazon RDS 蓝绿部署启动切换时,对蓝色和绿色环境的写入会被阻止,直至切换完成。在切换期间,模拟环境(即绿色环境)会跟上生产系统进度,从而确保模拟环境和生产环境之间的数据保持一致。生产和模拟环境完全同步后,蓝绿部署会通过将流量重定向到新提升的生产环境,来将模拟环境提升为新的生产环境。蓝绿部署设计为在切换完成后再启用对绿色环境的写入,从而确保在切换过程中实现零数据丢失。
问:Amazon RDS 蓝绿部署切换后,我的旧生产环境会怎样?
Amazon RDS 蓝绿部署不会删除您的旧生产环境。如果需要,您可以访问它,以进行其他验证和性能/回归测试。如果您不再需要旧的生产环境,可以将其删除。您需要为旧生产实例缴纳标准账单费用,直到您将其删除。
问:Amazon RDS 蓝绿部署切换防护机制检查什么?
Amazon RDS 蓝绿部署切换防护机制会阻止对您的蓝色和绿色环境进行的写入,直到绿色环境跟上进度,然后再切换。蓝绿部署还会对蓝色和绿色环境中的主实例和副本实例执行运行状况检查。例如,它们还会执行复制运行状况检查,以查看复制是否已停止或是否存在错误。它们会检测在蓝色与绿色环境之间长时间运行的事务。您可以指定允许的最长停机时间(最短可为 30 秒)。一旦正在进行的事务超过此值,则切换将超时。
问:Amazon RDS 蓝绿部署是否支持全球数据库、Amazon RDS 代理、跨区域只读副本或级联只读副本?
否,Amazon RDS 蓝绿部署不支持全球数据库、Amazon RDS 代理、跨区域只读副本或级联只读副本。
问:我能否使用 Amazon RDS 蓝绿部署来回滚更改?
否,目前您无法使用 Amazon RDS 蓝绿部署来回滚更改。
Amazon RDS 优化写入
问:Amazon RDS 优化写入与 MySQL 或 MariaDB 写入数据文件有何不同?
MySQL 及 MariaDB 通过将内存中的 16KiB 页面中的数据两次写入持久存储(首先写入“双写缓冲区”,然后写入表存储)来防止数据丢失。Amazon RDS 优化写入使用 Amazon Nitro System,只需一步即可将您的 16KiB 数据页面可靠、持久地写入数据文件。
问:哪个 RDS for MySQL 数据库版本支持 Amazon RDS 优化写入?
Amazon RDS 优化写入适用于 Amazon RDS for MySQL 版本 8.0.30 及更高版本和 Amazon RDS for MariaDB 版本 10.6.10 及更高版本。
问:哪些数据库实例类型支持 Amazon RDS 优化写入? 它们在哪些区域提供?
Amazon RDS 优化写入在 db.r6g 数据库实例中可用。它们已在提供这些实例的所有区域推出,包括由光环新网运营的亚马逊云科技中国(北京)区域和由西云数据运营的亚马逊云科技中国(宁夏)区域。
问:我应该在什么时候使用 Amazon RDS 优化写入?
所有 Amazon RDS for MySQL 和 Amazon RDS for MariaDB 用户都应实施 Amazon RDS 优化写入,将写入事务吞吐量提高多达 2 倍。具有大量写入工作负载的应用程序,例如数字支付、金融交易和在线游戏应用程序,会发现此功能特别有用。
问:Amazon Aurora MySQL 兼容版是否支持 Amazon RDS 优化写入?
否。Amazon Aurora MySQL 兼容版已经避免使用“双写缓冲区”。 相反,Amazon Aurora 在三个可用区(AZ)以六种方式复制数据,并使用基于仲裁的方法持久写入数据,然后正确读取数据。
问:客户能否将其现有的 Amazon RDS 数据库转换为使用 Amazon RDS 优化写入?
目前,这个初始版本不支持为现有数据库实例启用 Amazon RDS 优化写入,即使该实例类支持优化写入。
问:Amazon RDS 优化写入的费用是多少?
Amazon RDS for MySQL 和 Amazon RDS for MariaDB 客户可以免费使用 Amazon RDS 优化写入。