Amazon Relational Database Service
用户指南 (API 版本 2014-10-31)
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 Amazon AWS 入门

Amazon RDS 的限制

本主题介绍 Amazon RDS 的资源限制和命名约束。

Amazon RDS 中的限制

每个 AWS 区域的每个 AWS 账户都有关于可以创建的 Amazon RDS 资源数量的限制。达到某一资源的限制时,再进行创建该资源的调用就会失败并引发异常。

下表列出了资源及其每个区域的限制。

资源 默认限制
集群 40
集群参数组 50
跨区域快照复制请求 5
数据库实例1 40
事件订阅 20
手动快照 100
手动集群快照 100
选项组 20
参数组 50
只读副本 (每个主数据) 5
预留实例 40
每个数据库安全组的规则数 20
每个 VPC 安全组的规则数 50 个入站规则和 50 个出站规则
数据库安全组 25
VPC 安全组 5
子网组 50
每个子网组的子网数 20
每个资源的标签 50
所有数据库实例的总存储空间 100 TiB

1. 默认情况下,您可以拥有最多 40 个 Amazon RDS 数据库实例。在这 40 个实例中,最多 10 个实例可以是“已包含许可证”模式下的 Oracle 或 SQL Server 数据库实例。这 40 个实例都可以是“BYOL”模式下的 Amazon Aurora、MySQL、MariaDB、PostgreSQL 或 Oracle。如果您的应用程序需要更多数据库实例,您可以通过此申请表申请 RDS 数据库实例限制申请更多数据库实例。

Amazon RDS 中的命名约束

下表介绍 Amazon RDS 中的命名约束。

数据库实例标识符

  • 必须包含 1 到 63 个字母数字字符或连字符。

  • 第一个字符必须是字母。

  • 不能以连字符结束或包含两个连续连字符。

  • 对于每个区域的每个 AWS 账户的所有数据库实例必须是唯一的。

数据库名称

数据库名称约束因数据库引擎而异。

MySQL、Amazon Aurora 和 MariaDB

  • 必须包含 1 到 64 个字母数字字符。

  • 不能是数据库引擎的保留字。

PostgreSQL

  • 必须包含 1 到 63 个字母数字字符。

  • 必须以字母或下划线开头。后续字符可以是字母、下划线或数字 (0-9)。

  • 不能是数据库引擎的保留字。

Oracle

  • 长度不能超过 8 个字符。

SQL Server

  • 不适用。对于 SQL Server,在创建数据库实例之后,需创建数据库。数据库名称遵循通用 SQL Server 命名规则。

主用户名

主用户名约束因数据库引擎不同而不同。

MySQL 和 Amazon Aurora

  • 必须包含 1 到 16 个字母数字字符。

  • 第一个字符必须是字母。

  • 不能是数据库引擎的保留字。

Oracle

  • 必须包含 1 到 30 个字母数字字符。

  • 第一个字符必须是字母。

  • 不能是数据库引擎的保留字。

SQL Server

  • 必须包含 1 到 64 个字母数字字符。

  • 第一个字符必须是字母。

  • 不能是数据库引擎的保留字。

PostgreSQL

  • 必须包含 1 到 63 个字母数字字符。

  • 第一个字符必须是字母。

  • 不能是数据库引擎的保留字。

MariaDB

  • 必须包含 1 到 16 个字母数字字符。

  • 不能是数据库引擎的保留字。

主密码

主数据库用户的密码可以是除“/”、“"”或“@”之外的任意可打印 ASCII 字符。主密码约束因数据库引擎不同而不同。

MySQL、Amazon Aurora 和 MariaDB

  • 必须包含 8 到 41 个字符。

Oracle

  • 必须包含 8 到 30 个字符。

SQL Server

  • 必须包含 8 到 128 个字符。

PostgreSQL

  • 必须包含 8 到 128 个字符。

数据库参数组名称

  • 必须包含 1 到 255 个字母数字字符。

  • 第一个字符必须是字母。

  • 允许使用连字符,但名称不能以连字符结束或包含两个连续的连字符。

数据库子网组名称

  • 必须包含 1 到 255 个字符。

  • 允许使用字母数字字符、空格、连字符、下划线和句点。

Amazon RDS 中的文件大小限制

Amazon RDS 中的 Aurora 文件大小限制

利用 Amazon Aurora,表大小限制仅受 Aurora 集群卷大小约束,此卷的最大大小为 64 TiB。因此,Aurora 数据库中表的最大表大小为 64 TiB。

Amazon RDS 中的 MySQL 文件大小限制

对于 Amazon RDS MySQL 数据库实例,最大预置存储限制在使用 InnoDB file-per-table 表空间时将表的最大大小限制为 16 TB。此限制也将系统表空间的最大大小约束为 16 TB。默认情况下,为 Amazon RDS MySQL 数据库实例设置 InnoDB file-per-table 表空间 (表各自位于自己的表空间中)。有关更多信息,请参阅 数据库实例存储

注意

某些现有的数据库实例具有下限。例如,在 2014 年 4 月之前创建的 MySQL 数据库实例的文件和表大小限制为 2 TB。不管创建数据库实例的时间如何,此 2 TB 文件大小限制也适用于从 2014 年 4 月之前创建的数据库快照创建的数据库实例或只读副本。

根据您的应用程序,使用 InnoDB file-per-table 表空间有一些优缺点。要确定适用于您的应用程序的最佳方法,请转到 MySQL 文档中的 InnoDB File-Per-Table 模式

建议不要允许表增长到最大文件大小。一般而言,更好的方法是将数据分区到较小的表中,这可以提高性能并缩短恢复时间。

可用于将大型表划分为较小表的一个选项是分区。分区可基于您指定的规则将大型表的各个部分分布到单独的文件中。例如,如果您按日期存储事务,则可以创建分区规则,以便使用分区将较旧的事务分布到单独的文件中。随后您可以定期存档无需随时可供应用程序使用的历史事务数据。有关更多信息,请参阅 MySQL 文档中的分区

确定表的文件大小

使用以下 SQL 命令可确定任何表是否太大以及是否适合进行分区。要更新表统计数据,请在每个表中发出一个 ANALYZE TABLE 命令。有关更多信息,请参阅 MySQL 文档中的分析表

SELECT TABLE_SCHEMA, TABLE_NAME, round(((DATA_LENGTH + INDEX_LENGTH) / 1024 / 1024), 2) As "Approximate size (MB)", DATA_FREE FROM information_schema.TABLES WHERE TABLE_SCHEMA NOT IN ('mysql', 'information_schema', 'performance_schema');

启用 InnoDB file-per-table 表空间

  • 要启用 InnoDB file-per-table 表空间,请在数据库实例的参数组中将 innodb_file_per_table 参数设置为 1

禁用 InnoDB file-per-table 表空间

  • 要禁用 InnoDB file-per-table 表空间,请在数据库实例的参数组中将 innodb_file_per_table 参数设置为 0

有关更新参数组的信息,请参阅使用数据库参数组

当您启用或禁用 InnoDB file-per-table 表空间后,可以发出 ALTER TABLE 命令。您可以使用此命令将一个表从全局表空间移至它自己的表空间,或从它自己的表空间移至全局表空间,如下例所示。

ALTER TABLE table_name ENGINE=InnoDB, ALGORITHM=COPY;

Amazon RDS 中的 MariaDB 文件大小限制

对于 Amazon RDS MariaDB 数据库实例,最大预置存储限制在使用 InnoDB file-per-table 表空间时将表的最大大小限制为 16 TB。此限制也将系统表空间的最大大小约束为 16 TB。默认情况下,为 Amazon RDS MariaDB 数据库实例设置 InnoDB file-per-table 表空间 (每个表位于各自的表空间中)。有关更多信息,请参阅 数据库实例存储

根据您的应用程序,使用 InnoDB file-per-table 表空间有一些优缺点。要确定适用于您的应用程序的最佳方法,请转到 MySQL 文档中的 InnoDB File-Per-Table 模式

建议不要允许表增长到最大文件大小。一般而言,更好的方法是将数据分区到较小的表中,这可以提高性能并缩短恢复时间。

可用于将大型表划分为较小表的一个选项是分区。分区可基于您指定的规则将大型表的各个部分分布到单独的文件中。例如,如果您按日期存储事务,则可以创建分区规则,以便使用分区将较旧的事务分布到单独的文件中。随后您可以定期存档无需随时可供应用程序使用的历史事务数据。有关更多信息,请转到 MySQL 文档中的 https://dev.mysql.com/doc/refman/5.6/en/partitioning.html

确定表的文件大小

使用以下 SQL 命令可确定任何表是否太大以及是否适合进行分区。要更新表统计数据,请在每个表中发出一个 ANALYZE TABLE 命令。有关更多信息,请参阅 MySQL 文档中的分析表

SELECT TABLE_SCHEMA, TABLE_NAME, round(((DATA_LENGTH + INDEX_LENGTH) / 1024 / 1024), 2) As "Approximate size (MB)", DATA_FREE FROM information_schema.TABLES WHERE TABLE_SCHEMA NOT IN ('mysql', 'information_schema', 'performance_schema');

启用 InnoDB file-per-table 表空间

  • 要启用 InnoDB file-per-table 表空间,请在数据库实例的参数组中将 innodb_file_per_table 参数设置为 1

禁用 InnoDB file-per-table 表空间

  • 要禁用 InnoDB file-per-table 表空间,请在数据库实例的参数组中将 innodb_file_per_table 参数设置为 0

有关更新参数组的信息,请参阅使用数据库参数组

当您启用或禁用 InnoDB file-per-table 表空间后,可以发出 ALTER TABLE 命令。您可以使用此命令将一个表从全局表空间移至它自己的表空间,或从它自己的表空间移至全局表空间,如下例所示。

ALTER TABLE table_name ENGINE=InnoDB, ALGORITHM=COPY;