Amazon RDS 上的 MySQL 功能支持
RDS for MySQL 支持 MySQL 的大部分特性和功能。有些功能可能仅提供有限支持或受限制的权限。
您可以在数据库的新增功能?MySQL 2022
之类的关键词进行搜索。
注意
以下列表并不详尽。
主题
Amazon RDS for MySQL 主要版本上的 MySQL 功能支持
在以下几节中,可查找有关 Amazon RDS for MySQL 主要版本上的 MySQL 功能支持的信息:
有关受支持的 Amazon RDS for MySQL 次要版本的信息,请参阅Amazon RDS 上支持的 MySQL 次要版本。
Amazon RDS 支持 MySQL 8.4
对于运行 MySQL 8.4 或更高版本的数据库实例,Amazon RDS 支持以下新功能。
-
密码库 – RDS for MySQL 将 OpenSSL 替换为已获得 FIPS 140-3 认证的 AWS Libcrypto(AWS-LC)。有关更多信息,请参阅 AWS-LC GitHub 存储库(网址为 https://github.com/aws/aws-lc
)。 -
TLS 更改 – RDS for MySQL 仅支持 TLS 1.2 和 TLS 1.3。有关更多信息,请参阅 Amazon RDS 上 MySQL 数据库实例的 SSL/TLS 支持。
-
Memcached 支持 – Memcached 接口在 MySQL 8.4 上不再可用。有关更多信息,请参阅 MySQL memcached 支持。
-
默认身份验证插件 - 默认身份验证插件是
caching_sha2_password
。有关更多信息,请参阅 MySQL 默认身份验证插件。 -
mysqlpump
客户端实用工具 – MySQL 8.4 中不再提供mysqlpump
客户端实用工具。有关更多信息,请参阅《AWS 规范性指南》中的 RDS for MySQL 的基于角色的权限模型以及 mysqldump and mysqlpump。 -
托管复制存储过程 - 在使用这些存储过程管理复制时,如果其复制用户配置了
caching_sha2_password
,则必须通过指定SOURCE_SSL=1
来配置 TLS。caching_sha2_password
是 RDS for MySQL 8.4 的默认身份验证插件。 -
参数行为更改 - MySQL 8.4 的以下参数已更改。
-
innodb_dedicated_server
– 此参数默认处于启用状态。有关更多信息,请参阅 在 MySQL 8.4 中配置缓冲池大小和重做日志容量。 -
innodb_buffer_pool
– 数据库引擎现在计算此参数,但您可以覆盖此设置。有关更多信息,请参阅 在 MySQL 8.4 中配置缓冲池大小和重做日志容量。 -
innodb_redo_log_capacity
– 此参数现在控制重做日志文件的大小。数据库引擎现在计算此参数,但您可以覆盖此设置。有关更多信息,请参阅 在 MySQL 8.4 中配置缓冲池大小和重做日志容量。
-
-
已弃用或删除的参数 – RDS for MySQL 从 MySQL 8.4 数据库实例的参数组中删除了以下参数。
innodb_redo_log_capacity
参数现在控制重做日志文件的大小。-
innodb_log_file_size
-
innodb_log_files_in_group
-
-
参数的新默认值 – 对于 MySQL 8.4 数据库实例,以下参数具有新的默认值:
-
与性能相关的各种 MySQL 社区参数发生了更改。有关更多信息,请参阅 What is New in MySQL 8.4 since MySQL 8.0
。 建议您在迁移生产实例之前,在 RDS for MySQL 8.4 上测试应用程序的性能。
-
innodb_purge_threads
– 将默认值设置为公式LEAST({DBInstanceVCPU/2},4)
,以防止 InnoDB 历史记录列表长度变得过大。 -
group_replication_exit_state_action
– 默认值为OFFLINE_MODE
,这与 MySQL 社区中的默认值一致。有关更多信息,请参阅 RDS for MySQL 主动-主动集群的注意事项和最佳实践。 -
binlog_format
– 默认值为ROW
,这与 MySQL 社区中的默认值一致。您可以修改单可用区数据库实例或多可用区数据库实例的参数,但多可用区数据库集群的参数不可修改。多可用区数据库集群使用半同步复制,当binlog_format
设置为MIXED
或STATEMENT
时,复制将失败。
-
-
包容性语言更改 – RDS for MySQL 8.4 包含自 RDS for MySQL 8.0 起,与包容性语言的关键字和系统架构相关的更改。有关更多信息,请参阅 有关 RDS for MySQL 8.4 的包容性语言更改。
要查看所有 MySQL 8.4 功能和更改的列表,请参阅 MySQL 文档中的 What is New in MySQL 8.4 since MySQL 8.0
有关不支持特征的列表,请参阅 Amazon RDS 不支持的 MySQL 功能。
支持的 RDS for MySQL 存储引擎
虽然 MySQL 支持功能不同的多种存储引擎,但并非所有引擎都为恢复和数据持久性进行了优化。Amazon RDS 完全支持 MySQL 数据库实例的 InnoDB 存储引擎。Amazon RDS 的时间点恢复和快照恢复功能要求使用恢复存储引擎,且仅支持 InnoDB 存储引擎。有关更多信息,请参阅 MySQL memcached 支持。
Amazon RDS for MySQL 当前不支持联合存储引擎。
对于用户创建的架构,MyISAM 存储引擎不支持可靠的恢复,并且在恢复后重新启动 MySQL 时可能会导致数据丢失或损坏,使时间点还原或快照还原无法发挥预期的作用。不过,如果您仍选择配合使用 MyISAM 和 Amazon RDS,在某些情况下,快照可能也会有所帮助。
注意
mysql
架构中的系统表可以位于 MyISAM 存储中。
如果要将现有的 MyISAM 表转换为 InnoDB 表,您可以使用 ALTER TABLE
命令(例如,alter table TABLE_NAME engine=innodb;
)。请注意,MyISAM 和 InnoDB 各有优点和缺点,所以在执行前请充分评估转换可能对您的应用程序造成的影响。
Amazon RDS 不再支持 MySQL 5.1、5.5 和 5.6。但您可以还原现有的 MySQL 5.1、5.5 和 5.6 快照。在还原 MySQL 5.1、5.5 和 5.6 快照时,数据库实例将自动升级到 MySQL 5.7。
在 Amazon RDS 上通过 MySQL 使用 memcached 和其他选项
大多数 Amazon RDS 数据库引擎均支持一些选项组,通过这些选项组,可选择其他功能用于数据库实例。RDS for MySQL 数据库实例支持 memcached
选项,它是一个简单的基于键的缓存。有关 memcached
和其他选项的更多信息,请参阅适用于 MySQL 数据库实例的选项。有关使用选项组的详细信息,请参阅使用选项组。
Amazon RDS 上 MySQL 的 InnoDB 缓存预热
InnoDB 缓存预热可为您的 MySQL DB 实例提供性能收益,方式是在数据库实例关闭时保存缓冲池的当前状态,然后在数据库实例启动时从保存的信息重新加载缓冲池。这将不再需要缓冲池使用常规数据库进行“预热”,而是预加载具有已知常见查询的页的缓冲池。存储已保存缓冲池信息的文件仅存储缓冲池内的页的元数据,而不是存储页本身。因此,此文件需要的存储空间不多。此文件的大小约为缓存大小的 0.2%。例如,对于 64 GiB 的缓存,缓存预热文件大小为 128 MiB。有关 InnoDB 缓存预热的更多信息,请参阅 MySQL 文档中的保存和还原缓冲池状态
RDS for MySQL 数据库实例支持 InnoDB 缓存预热。要启用 InnoDB 缓存预热,请将数据库实例的参数组中的 innodb_buffer_pool_dump_at_shutdown
和 innodb_buffer_pool_load_at_startup
参数设置为 1。更改参数组中的这些参数值将影响使用该参数组的所有 MySQL 数据库实例。要为特定 MySQL 数据库实例启用 InnoDB 缓存预热,您可能需要为这些实例创建新的参数组。有关参数组的信息,请参阅Amazon RDS 的参数组。
InnoDB 缓存预热主要为使用标准存储的数据库实例提供性能收益。如果您使用 PIOPS 存储,则通常看不到显著的性能收益。
重要
如果您的 MySQL 数据库实例未正常关闭(例如,在失效转移期间),则缓冲池状态将不会保存到磁盘。在此情况下,MySQL 将在重新启动数据库实例时加载任何可用的缓冲池文件。这不会造成任何损害,但还原后的缓冲池可能不会反映缓冲池在重新启动前的最新状态。要确保您拥有启动时可用于预热 InnoDB 缓存的缓冲池的最新状态,建议您定期“按需”转储缓冲池。
您可创建事件来定期自动转储缓冲池。例如,以下语句创建一个名为 periodic_buffer_pool_dump
的事件,该事件每小时转储一次缓冲池。
CREATE EVENT periodic_buffer_pool_dump ON SCHEDULE EVERY 1 HOUR DO CALL mysql.rds_innodb_buffer_pool_dump_now();
有关 MySQL 事件的更多信息,请参阅 MySQL 文档中的事件语法
按需转储和加载缓冲池
您可“按需”保存和加载 InnoDB 缓存。
要将缓冲池的当前状态转储到磁盘,请调用 mysql.rds_innodb_buffer_pool_dump_now 存储过程。
要从磁盘加载缓冲池的已保存状态,请调用 mysql.rds_innodb_buffer_pool_load_now 存储过程。
要取消正在进行的加载操作,请调用 mysql.rds_innodb_buffer_pool_load_abort 存储过程。
有关 RDS for MySQL 8.4 的包容性语言更改
RDS for MySQL 8.4 包含 MySQL 8.4 社区版本中与包容性语言的关键字和系统架构相关的更改。例如,SHOW REPLICA
STATUS
命令替换了 SHOW SLAVE STATUS
。
配置参数名称更改
以下配置参数在 RDS for MySQL 8.4 中具有新名称。
为实现兼容,您可以在 mysql
客户端使用任何一个名称检查参数名称。当修改自定义 MySQL 8.4 参数组中的值时,只能使用新名称。有关更多信息,请参阅 原定设置和自定义参数组。
要删除的名称 | 新名称或首选名称 |
---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
存储过程名称更改
以下存储过程在 RDS for MySQL 8.4 中具有新名称。
为实现兼容,您可以在 RDS for MySQL 8.4 初始版本中使用任一名称。未来版本将删除旧的过程名称。有关更多信息,请参阅 配置、启动和停止二进制日志(binlog)复制。
要删除的名称 | 新名称或首选名称 |
---|---|
|
|
|
|
|
|
|
|
|
|
|
|
Amazon RDS 不支持的 MySQL 功能
Amazon RDS 当前不支持以下 MySQL 功能:
-
身份验证插件
-
将错误记录到系统日志
-
InnoDB 表空间加密
-
密码强度插件
-
永久保存的系统变量
-
Rewriter 查询重写插件
-
半同步复制,多可用区数据库集群除外
-
可传输的表空间
-
X 插件
为了提供托管服务体验,Amazon RDS 未提供数据库实例的 Shell 访问权限。并且它还限制了对需要高级权限的某些系统程序和表的访问。Amazon RDS 支持使用任何标准 SQL 客户端应用程序访问数据库实例上的数据库。Amazon RDS 不允许使用 Telnet、安全外壳(SSH)或 Windows 远程桌面连接直接从主机访问数据库实例。创建数据库实例时,系统会将您分配为该实例上所有数据库的 db_owner,并且您将具有除用于备份的权限以外的所有数据库级别权限。Amazon RDS 会为您管理备份。