Amazon RDS 的配额和限制
接下来,您可以查找 Amazon RDS 的资源配额和命名约束的说明。
Amazon RDS 中的配额
每个AWS区域的每个AWS账户都有关于可以创建的 Amazon RDS 资源数量的配额。达到某一资源的配额时,再进行创建该资源的调用就会失败并引发异常。
下表列出了每个 AWS 区域的资源及其配额。
名称 | 默认值 | 可调整 | 描述 |
---|---|---|---|
每个数据库安全组的授权 | 每个受支持的区域:20 个 | 否 | 每个数据库安全组的安全组授权数 |
自定义引擎版本 | 每个受支持的区域:40 个 | 是 |
当前区域中此账户中允许的自定义引擎版本的最大数目 |
数据库集群参数组 | 每个受支持的区域:50 个 | 否 | 数据库集群参数组的最大数目 |
数据库集群 | 每个受支持的区域:40 个 | 是 |
当前区域中的此账户中允许的 Aurora 集群的最大数目 |
数据库实例 | 每个受支持的区域:40 个 | 是 |
当前区域中此账户中允许的数据库实例的最大数目 |
数据库子网组 | 每个受支持的区域:50 个 | 是 |
数据库子网组的最大数目 |
数据 API HTTP 请求体大小 | 每个受支持的区域:4MB | 否 | HTTP 请求正文允许的最大大小。 |
数据 API 最大并发集群密钥对数 | 每个受支持的区域:30 个 | 否 | 当前 AWS 区域中对此账户的并发数据 API 请求中 Aurora Serverless v1 数据库集群和密钥的唯一对的最大数量。 |
数据 API 最大并发请求数 | 每个受支持的区域:500 个 | 否 | 针对 Aurora Serverless v1 数据库集群的数据 API 请求的最大数量,这些请求使用相同密钥且可以同时处理。当处理中的请求完成时,将对其他请求进行排队和处理。 |
Data API 最大结果集大小 | 每个受支持的区域:1MB | 否 | 数据 API 可以返回的数据库结果集的最大大小。 |
数据 API 的 JSON 响应字符串的最大大小 | 每个受支持的区域:10 MB | 否 | RDS 数据 API 返回的简化 JSON 响应字符串的最大大小。 |
每秒 Data API 请求数 | 每个受支持的区域:每秒 1000 个 | 否 | 当前 AWS 区域中此账户支持的每秒针对数据 API 的最大请求数 |
事件订阅 | 每个受支持的区域:20 个 | 是 |
事件订阅的最大数目 |
每个数据库集群的 IAM 角色 | 每个受支持的区域:5 个 | 是 |
与数据库集群关联的 IAM 角色的最大数目 |
每个数据库实例的 IAM 角色 | 每个受支持的区域:5 个 | 是 |
与数据库实例关联的 IAM 角色的最大数目 |
集成 | 每个受支持的区域:100 个 | 否 | 当前 AWS 区域内此账户中支持的最大集成数量 |
手动数据库集群快照 | 每个受支持的区域:100 个 | 是 |
手动数据库集群快照的最大数目 |
手动数据库实例快照数 | 每个受支持的区域:100 个 | 是 |
手动数据库实例快照的最大数目 |
选项组 | 每个受支持的区域:20 个 | 是 |
选项组的最大数目 |
参数组 | 每个受支持的区域:50 个 | 是 |
参数组的最大数目 |
代理 | 每个受支持的区域:20 个 | 是 |
当前 AWS 区域中此账户中允许的代理的最大数目 |
每个主数据库实例的只读副本数 | 每个受支持的区域:15 个 | 是 |
每个主数据库实例的只读副本的最大数量。Amazon Aurora 的此限额无法调整。 |
预留数据库实例 | 每个受支持的区域:40 个 | 是 |
当前 AWS 区域中此账户中允许的预留数据库实例的最大数目 |
每个安全组的规则数 | 每个受支持的区域:20 个 | 否 | 每个数据库安全组的规则的最大数目 |
安全组 | 每个受支持的区域:25 个 | 是 |
数据库安全组的最大数目 |
安全组 (VPC) | 每个受支持的区域:5 个 | 否 | 每个 Amazon VPC 的数据库安全组的最大数目 |
每个数据库子网组的子网数 | 每个受支持的区域:20 个 | 否 | 每个数据库子网组的子网的最大数目 |
每个资源的标签 | 每个受支持的区域:50 个 | 否 | 每个 Amazon RDS 资源的标签的最大数目 |
所有数据库实例的总存储空间 | 每个受支持的区域:100 GB | 是 |
EBS 卷上所有 Amazon RDS 数据库实例的最大总存储空间(以 GB 为单位) 此限额不适用于 Amazon Aurora,每个数据库集群的最大集群容量为 128TiB。 |
注意
默认情况下,您最多可以有 40 个数据库实例。RDS 数据库实例、Aurora 数据库实例、Amazon Neptune 实例和 Amazon DocumentDB 实例适用于此配额。
以下限制适用于 Amazon RDS 数据库实例:
-
每个 SQL Server 版本(Enterprise、Standard、Web 和 Express)具有 10 个处于“附带许可”模式的实例
-
Oracle 具有 10 个处于“附带许可”模式的实例
-
Db2 具有 40 个处于“自带许可”(BYOL)许可模式的实例
-
MySQL、MariaDB 或 PostgreSQL 具有 40 个实例
-
Oracle 具有 40 个处于“自带许可”(BYOL) 许可模式的实例
如果您的应用程序需要更多数据库实例,则可以通过打开Service Quotas 控制台
对于 RDS for Oracle,每个区域的只读副本数限制为每个源数据库 5 个。
由 AWS Backup 管理的备份被视为手动数据库快照,但不计入手动快照限额。有关 AWS Backup 的更多信息,请参阅 AWS Backup 开发人员指南。
如果您使用任何 RDS API 操作并超过每秒调用数的默认限额,Amazon RDS API 会发出如下所示的错误。
ClientError: An error occurred (ThrottlingException) when calling the
API_name
operation: Rate exceeded.
此处,请减少每秒调用数。配额旨在涵盖大多数使用案例。如果需要更高的配额,可以使用以下任一选项请求增加配额:
-
在控制台中,打开服务配额控制台
。 -
从 AWS CLI 中,使用 request-service-quota-increase AWS CLI 命令。
有关更多信息,请参阅 Service Quotas 用户指南。
Amazon RDS 中的命名约束
Amazon RDS 中的命名约束如下所示:
-
数据库实例标识符:
-
必须包含 1–63 个字母数字字符或连字符。
-
第一个字符必须是字母。
-
不能以连字符结尾,也不能包含两个连续连字符。
-
对于每个 AWS 区域的每个 AWS 账户的所有数据库实例必须是唯一的。
-
-
初始数据库名称:
-
数据库名称约束因数据库引擎而异。有关更多信息,请参阅创建每个数据库实例时的可用设置。
-
SQL Server – 在创建数据库实例后创建数据库。
-
-
主用户名 – 主用户名约束因每个数据库引擎而异。有关更多信息,请参阅创建数据库实例时的可用设置。
-
主密码:
-
数据库主用户的密码可以包括除
/
、'
、"
、@
或空格之外的任意可打印 ASCII 字符。对于 Oracle,
&
是额外的字符限制。 -
密码可能包含以下数量的可打印 ASCII 字符,具体取决于数据库引擎:
-
Db2:8–255
-
MariaDB 和 MySQL:8–41
-
Oracle:8–30
-
SQL Server 和 PostgreSQL:8–128
-
-
-
数据库参数组:
-
必须包含 1–255 个字母数字字符。
-
第一个字符必须是字母。
-
允许使用连字符,但名称不能以连字符结束或包含两个连续的连字符。
-
-
数据库子网组:
-
必须包含 1–255 个字符。
-
允许使用字母数字字符、空格、连字符、下划线和句点。
-
最大数据库连接数
数据库的同时最大连接数量因数据库引擎类型和数据库实例类的内存分配情况而异。最大连接数通常在与数据库实例关联的参数组中设置。例外情况是 Microsoft SQL Server,此时,此参数是在 SQL Server Management Studio(SSMS)中数据库实例的服务器属性中设置的。
数据库连接占用内存。将其中一个参数设置得太高可能会导致内存不足的情况,从而可能会导致数据库实例处于 incompatible-parameters 状态。有关更多信息,请参阅 诊断并解决内存限制的不兼容参数状态。
如果您的应用程序经常打开和关闭连接,或使大量长期连接保持打开,我们建议您使用 Amazon RDS 代理。RDS 代理是一种完全托管的高可用性数据库代理,它使用连接池安全有效地共享数据库连接。要了解有关 RDS 代理的更多信息,请参阅将 Amazon RDS 代理。
注意
对于 Oracle,您可以设置用户进程以及用户和系统会话的最大数量。
对于 Db2,您无法设置最大连接数。限制为 64000。
下表显示了有关不同数据库引擎的最大数据库连接数的信息。
数据库引擎 | 参数 | 允许的值 | 默认值 | 描述 |
---|---|---|---|---|
MariaDB 和 MySQL | max_connections |
1–100000 |
对于除 MariaDB 版本 10.5 和 10.6 以外的所有 MariaDB 和 MySQL 版本,原定设置为: {DBInstanceClassMemory/12582880} 该公式实际上等同于 MB/12。 对于 MariaDB 版本 10.5 和 10.6,原定设置为: LEAST({DBInstanceClassMemory/25165760},12000) 该公式实际上等同于 MB/25。 在任一种情况下,如果默认值计算得出的值大于 16000,则 Amazon RDS 将 MariaDB 和 MySQL 数据库实例的限制设置为 16000。 |
允许的客户端同时连接数 |
Oracle | processes |
80–20000 | LEAST({DBInstanceClassMemory/9868951}, 20000) | 用户进程 |
Oracle | sessions |
100–65535 | 不适用 | 用户和系统会话 |
PostgreSQL | max_connections |
6–8388607 | LEAST({DBInstanceClassMemory/9531392}, 5000) | 最大并发连接数 |
SQL Server | user connections |
0–32767 | 0(无限制) | 最大并发连接数。有关更多信息,请参阅配置 user connections(服务器配置选项) |
DBInstanceClassMemory
以字节为单位。有关如何计算此值的详细信息,请参阅 指定数据库参数。由于为操作系统和 RDS 管理进程预留了内存,因此,此内存大小小于数据库实例类的硬件规格中所示的值(以 GiB 为单位)。
例如,某些数据库实例类有 8GiB 的内存,即 8,589,934,592 字节。对于在内存为 8GiB 的数据库实例类(例如 db.m7g.large)上运行的 MySQL 数据库实例,使用总内存的公式为 8589934592/12582880=683
。但是,变量 DBInstanceClassMemory
会自动减去为操作系统和管理数据库实例的 RDS 进程保留的内存量。然后,将减法的余数除以 12,582,880。此计算的结果是:max_connections
的值约为 630,而不是 683。此值取决于数据库实例类和数据库引擎。
当 MariaDB 或 MySQL 数据库实例在小型数据库实例类(例如 db.t3.micro 或 db.t3.small)上运行时,可用内存总量会很低。对于这些数据库实例类,RDS 会预留很大一部分可用内存,这会影响值 max_connections
。例如,对于在 db.t3.micro 数据库实例类上运行的 MySQL 数据库实例,原定设置的最大连接数约为 60。您可以通过连接数据库 MariaDB 或 MySQL 数据库实例并运行以下 SQL 命令来确定相应实例的 max_connections
值:
SHOW GLOBAL VARIABLES LIKE 'max_connections';
Amazon RDS 中的文件大小限制
文件大小限制适用于某些 Amazon RDS 数据库实例。有关更多信息,请参阅以下特定于引擎的限制: