Amazon RDS 上的 MySQL 功能支持 - Amazon Relational Database Service

Amazon RDS 上的 MySQL 功能支持

RDS for MySQL 支持 MySQL 的大部分特性和功能。有些功能可能仅提供有限支持或受限制的权限。

您可以在数据库的新增功能?页面上筛选新的 Amazon RDS 特征。对于 Products (产品),请选择 Amazon RDS。然后使用 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 的以下参数已更改。

  • 已弃用或删除的参数 – 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 设置为 MIXEDSTATEMENT 时,复制将失败。

  • 包容性语言更改 – 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_shutdowninnodb_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 缓存。

有关 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 参数组中的值时,只能使用新名称。有关更多信息,请参阅 原定设置和自定义参数组

要删除的名称 新名称或首选名称

init_slave

init_replica

log_slave_updates

log_replica_updates

log_slow_slave_statements

log_slow_replica_statements

rpl_stop_slave_timeout

rpl_stop_replica_timeout

skip_slave_start

skip_replica_start

slave_allow_batching

replica_allow_batching

slave_checkpoint_group

replica_checkpoint_group

slave_checkpoint_period

replica_checkpoint_period

slave_compressed_protocol

replica_compressed_protocol

slave_exec_mode

replica_exec_mode

slave_load_tmpdir

replica_load_tmpdir

slave_max_allowed_packet

replica_max_allowed_packet

slave_net_timeout

replica_net_timeout

slave_parallel_type

replica_parallel_type

slave_parallel_workers

replica_parallel_workers

slave_pending_jobs_size_max

replica_pending_jobs_size_max

slave_preserve_commit_order

replica_preserve_commit_order

slave_skip_errors

replica_skip_errors

slave_sql_verify_checksum

replica_sql_verify_checksum

slave_transaction_retries

replica_transaction_retries

slave_type_conversions

replica_type_conversions

sql_slave_skip_counter

sql_replica_skip_counter

存储过程名称更改

以下存储过程在 RDS for MySQL 8.4 中具有新名称。

为实现兼容,您可以在 RDS for MySQL 8.4 初始版本中使用任一名称。未来版本将删除旧的过程名称。有关更多信息,请参阅 配置、启动和停止二进制日志(binlog)复制

要删除的名称 新名称或首选名称

mysql.rds_next_master_log

mysql.rds_next_source_log

mysql.rds_reset_external_master

mysql.rds_reset_external_source

mysql.rds_set_external_master

mysql.rds_set_external_source

mysql.rds_set_external_master_with_auto_position

mysql.rds_set_external_source_with_auto_position

mysql.rds_set_external_master_with_delay

mysql.rds_set_external_source_with_delay

mysql.rds_set_master_auto_position

mysql.rds_set_source_auto_position

Amazon RDS 不支持的 MySQL 功能

Amazon RDS 当前不支持以下 MySQL 功能:

  • 身份验证插件

  • 将错误记录到系统日志

  • InnoDB 表空间加密

  • 密码强度插件

  • 永久保存的系统变量

  • Rewriter 查询重写插件

  • 半同步复制,多可用区数据库集群除外

  • 可传输的表空间

  • X 插件

为了提供托管服务体验,Amazon RDS 未提供数据库实例的 Shell 访问权限。并且它还限制了对需要高级权限的某些系统程序和表的访问。Amazon RDS 支持使用任何标准 SQL 客户端应用程序访问数据库实例上的数据库。Amazon RDS 不允许使用 Telnet、安全外壳(SSH)或 Windows 远程桌面连接直接从主机访问数据库实例。创建数据库实例时,系统会将您分配为该实例上所有数据库的 db_owner,并且您将具有除用于备份的权限以外的所有数据库级别权限。Amazon RDS 会为您管理备份。