Amazon RDS 上的 MariaDB 功能支持 - Amazon Relational Database Service
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

Amazon RDS 上的 MariaDB 功能支持

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

您可以在数据库的新增功能?页面上筛选新的 Amazon RDS 功能。对于 Products (产品),请选择 Amazon RDS。然后使用 MariaDB 2023 之类的关键词进行搜索。

注意

以下列表并不详尽。

Amazon RDS for MariaDB 各主要版本上的 MariaDB 功能支持

在以下几部分中,查找有关 Amazon RDS for MariaDB 各主要版本上的 MariaDB 功能支持的信息:

有关支持的 Amazon RDS for MariaDB 次要版本的信息,请参阅 Amazon RDS 上的 MariaDB 版本

Amazon RDS 上对 MariaDB 10.11 的支持

对于运行 MariaDB 版本 10.11 或更高版本的数据库实例,Amazon RDS 支持以下新功能。

  • 密码重用检查插件 – 您可以使用 MariaDB 密码重用检查插件来防止用户重用密码并设置密码的保留期。有关更多信息,请参阅密码重用检查插件

  • GRANT TO PUBLIC 授权 – 您可以向所有具有服务器访问权限的用户授予权限。有关更多信息,请参阅 GRANT TO PUBLIC

  • SUPER 和 READ ONLY ADMIN 权限分离 – 您可以删除所有用户的 READ ONLY ADMIN 权限,即使是以前拥有 SUPER 权限的用户也是如此。

  • 安全 – 现在可以将选项 --ssl 设置为 MariaDB 客户端的原定设置。如果配置不正确,MariaDB 不再以静默方式禁用 SSL。

  • SQL 命令和函数 – 您现在可以使用 SHOW ANALYZE FORMAT=JSON 命令和函数 ROW_NUMBERSFORMAT 以及 RANDOM_BYTESSFORMAT 允许字符串格式化,且原定设置情况下处于启用状态。只需一条命令即可将分区转换为表和将表转换为分区。围绕 JSON_*() 函数还有一些改进。在 10.10 及更高版本中,已弃用 DES_ENCRYPTDES_DECRYPT 函数。有关更多信息,请参阅 SFORMAT

  • InnoDB 增强功能 – 这些增强功能包括以下项目:

    • 重做日志的性能改进,以减少写入放大并提高并发性。

    • 无需重新初始化数据目录,即可更改撤消表空间。此增强功能减少了控制面板开销。它要求重启,但在更改撤消表空间后不需要重新初始化。

    • 支持 CHECK TABLE … EXTENDED 和内部索引降序。

    • 改进了批量插入功能。

  • 二进制日志更改 – 这些更改包括以下项目:

    • 分两个阶段记录 ALTER 以减少复制延迟。原定设置情况下,binlog_alter_two_phase 参数处于禁用状态,但可以通过参数组启用。

    • 记录 explicit_defaults_for_timestamp

    • 如果事务可以安全地回滚,则不再记录 INCIDENT_EVENT

  • 复制改进 – 如果主服务器支持 GTID 复制,则 MariaDB 版本 10.11 数据库实例原定设置情况下使用此功能。另外,Seconds_Behind_Master 更精确。

  • 客户端 – 您可以将新的命令行选项用于 mysqlbinglogmariadb-dump。您可以使用 mariadb-dump 转储和还原历史数据。

  • 系统版本控制 – 您可以修改历史记录。MariaDB 会自动创建新的分区。

  • 原子 DDLCREATE OR REPLACE 现在是原子的。语句要么成功,要么完全相反。

  • 重做日志写入 – 重做日志异步写入。

  • 存储函数 – 存储函数现在支持存储过程中的相同 INOUTINOUT 参数。

  • 已弃用或移除的参数– 对于 MariaDB 版本 10.11 数据库实例,以下参数已弃用或删除:

  • 动态参数 – 对于 MariaDB 版本 10.11 数据库实例,以下参数现在是动态的:

  • 参数的新原定设置值 – 对于 MariaDB 版本 10.11 数据库实例,以下参数具有新的原定设置值:

  • 参数的新有效值 – 对于 MariaDB 版本 10.11 数据库实例,以下参数具有新的有效值:

  • 新参数 – 对于 MariaDB 版本 10.11 数据库实例,以下参数是新的:

有关所有功能和文档的列表,请参阅 MariaDB 网站上的以下信息。

有关不支持功能的列表,请参阅 Amazon RDS 不支持的 MariaDB 功能

Amazon RDS 对 MariaDB 10.6 的支持

对于运行 MariaDB 版本 10.6 或更高版本的数据库实例,Amazon RDS 支持以下新功能:

  • MyRocks 存储引擎 - 您可以将 MyRocks 存储引擎与 RDS for MariaDB 结合使用,以优化写入密集型高性能 Web 应用程序的存储消耗。有关更多信息,请参阅 Amazon RDS 上的 MariaDB 支持的存储引擎MyRocks

  • Amazon Identity and Access Management (IAM) 数据库身份验证 - 您可以使用 IAM 数据库身份验证来提高安全性和集中管理与 MariaDB 数据库实例的连接。有关更多信息,请参阅“适用于 MariaDB、MySQL 和 PostgreSQL 的 IAM 数据库身份验证”。

  • 升级选项 - 您现在可以从以前的任何主要版本(10.3、10.4、10.5)升级到 RDS for MariaDB 版本 10.6。您还可以将现有 MySQL 5.6 或 5.7 数据库实例的快照还原到 MariaDB 10.6 实例。有关更多信息,请参阅“升级 MariaDB 数据库引擎”。

  • 延迟复制 - 您现在可以设置一个只读副本落后于源数据库的可配置时间段。在标准 MariaDB 复制配置中,源和副本之间的复制延迟最小。使用延迟复制时,您可以将故意延迟设置为灾难恢复策略。有关更多信息,请参阅“使用 MariaDB 配置延迟复制”。

  • Oracle PL/SQL 兼容性 - 通过使用 RDS for MariaDB 版本 10.6,您可以更轻松地将旧版 Oracle 应用程序迁移到 Amazon RDS。有关更多信息,请参阅 SQL_MODE=ORACLE

  • 原子 DDL - 您的动态数据语言 (DDL) 语句与 RDS for MariaDB 版本 10.6 结合使用可能相对安全。CREATE TABLEALTER TABLERENAME TABLEDROP TABLEDROP DATABASE 和相关的 DDL 语句现在是原子的。要么语句成功,要么完全相反。有关更多信息,请参阅原子 DDL

  • 其他增强功能 - 这些增强功能包括在 SQL 中将 JSON 数据转换为关系格式的 JSON_TABLE 功能,以及使用 Innodb 更快地加载空表数据。它们还包括用于分析和故障排除的新 sys_schema,用于忽略未使用索引的优化器增强以及性能改进。有关更多信息,请参阅 JSON_TABLE

  • 参数的新默认值 – 对于 MariaDB 10.6 版本数据库实例,以下参数具有新的默认值:

有关所有 MariaDB 10.6 功能的列表及其文档,请参阅 MariaDB 网站上的 MariaDB 10.6 中的更改和改进发行说明 - MariaDB 10.6 系列

有关不支持功能的列表,请参阅 Amazon RDS 不支持的 MariaDB 功能

Amazon RDS 对 MariaDB 10.5 的支持

对于运行 MariaDB 版本 10.5 或更高版本的数据库实例,Amazon RDS 支持以下新功能:

  • InnoDB 增强功能 – MariaDB 10.5 版本包括 InnoDB 增强功能。有关更多信息,请参阅 MariaDB 文档中的 InnoDB:性能改进等

  • 性能架构更新 – MariaDB 10.5 版本包括性能架构更新。有关更多信息,请参阅 MariaDB 文档中的性能架构更新以满足 MySQL 5.7 工具和表的要求

  • InnoDB 重做日志中的一个文件 – 在 10.5 之前的 MariaDB 版本中,innodb_log_files_in_group 参数的值设置为 2。在 MariaDB 10.5 版本中,此参数的值设置为 1

    如果从之前的版本升级到 MariaDB 10.5 版本,而且未修改参数,则 innodb_log_file_size 参数值不变。但是,它适用于一个日志文件而非两个。因此,升级后的 MariaDB 10.5 版本数据库实例使用的重做日志大小是升级前所用大小的一半。此变化可能会对性能产生明显的影响。要解决此问题,您可以将 innodb_log_file_size 参数的值增大两倍。有关修改参数的信息,请参阅 修改数据库参数组中的参数

  • SHOW SLAVE STATUS 命令不受支持 – 在 10.5 之前的 MariaDB 版本中,SHOW SLAVE STATUS 命令需要 REPLICATION SLAVE 特权。在 MariaDB 10.5 版本中,等效的 SHOW REPLICA STATUS 命令需要 REPLICATION REPLICA ADMIN 特权。此新权限不会向 RDS 主用户授予。

    请不要使用 SHOW REPLICA STATUS 命令,而是运行新的 mysql.rds_replica_status 存储过程以返回类似信息。有关更多信息,请参阅“mysql.rds_replica_status”。

  • SHOW RELAYLOG EVENTS 命令不受支持 – 在 10.5 之前的 MariaDB 版本中,SHOW RELAYLOG EVENTS 命令需要 REPLICATION SLAVE 特权。在 MariaDB 10.5 版本中,此命令需要 REPLICATION REPLICA ADMIN 特权。此新权限不会向 RDS 主用户授予。

  • 参数的新默认值 – 对于 MariaDB 10.5 版本数据库实例,以下参数具有新的默认值:

有关所有 MariaDB 10.5 功能的列表及其文档,请参阅 MariaDB 网站上的 MariaDB 10.5 中的更改和改进发行说明 - MariaDB 10.5 系列

有关不支持功能的列表,请参阅 Amazon RDS 不支持的 MariaDB 功能

Amazon RDS 上的 MariaDB 10.4 支持

对于运行 MariaDB 版本 10.4 或更高版本的数据库实例,Amazon RDS 支持以下新功能:

有关所有 MariaDB 10.4 功能的列表及其文档,请参阅 MariaDB 网站上的 MariaDB 10.4 中的更改和改进发行说明 - MariaDB 10.4 系列

有关不支持功能的列表,请参阅 Amazon RDS 不支持的 MariaDB 功能

Amazon RDS 上的 MariaDB 10.3 支持

对于运行 MariaDB 版本 10.3 或更高版本的数据库实例,Amazon RDS 支持以下新功能:

  • Oracle 兼容性 – PL/SQL 兼容性解析器、序列、用于补充 UNION 的 INTERSECT 和 EXCEPT、新的 TYPE OF 和 ROW TYPE OF 声明以及不可见的列

  • 时间数据处理 – 由系统控制版本的表,用于查询过去和现在的数据库状态

  • 灵活性 – 用户定义的汇总、不依赖存储的列压缩以及将客户端 IP 地址传送至服务器的代理协议支持

  • 可管理性 – 即时 ADD COLUMN 操作以及快速失败数据定义语言 (DDL) 操作

有关所有 MariaDB 10.3 功能的列表及其文档,请参阅 MariaDB 网站上的 MariaDB 10.3 中的更改和改进发行说明 - MariaDB 10.3 系列

有关不支持功能的列表,请参阅 Amazon RDS 不支持的 MariaDB 功能

Amazon RDS 上的 MariaDB 支持的存储引擎

RDS for MariaDB 支持以下存储引擎。

目前,RDS for MariaDB 不支持其他存储引擎。

InnoDB 存储引擎

尽管 MariaDB 支持功能不同的多种存储引擎,但并非所有引擎都针对恢复和数据耐久性而进行了优化。InnoDB 是 Amazon RDS 上的 MariaDB 数据库实例的推荐存储引擎。Amazon RDS 的时间点还原和快照还原功能要求使用可恢复的存储引擎,且仅支持 MariaDB 版本的推荐存储引擎。

有关更多信息,请参阅 InnoDB

MyRocks 存储引擎

MyRocks 存储引擎在 RDS for MariaDB 版本 10.6 及更高版本中提供。在生产数据库中使用 MyRocks 存储引擎之前,我们建议您执行彻底的基准测试和测试,以验证您的使用案例相比 InnoDB 的任何潜在优势。

MariaDB 版本 10.6 的默认参数组包括 MyRocks 参数。有关更多信息,请参阅 MariaDB 的参数使用参数组

要创建使用 MyRocks 存储引擎的表,请在 CREATE TABLE 语句中指定 ENGINE=RocksDB。以下示例创建使用 MyRocks 存储引擎的表。

CREATE TABLE test (a INT NOT NULL, b CHAR(10)) ENGINE=RocksDB;

我们强烈建议您不要运行同时跨 InnoDB 和 MyRocks 表的事务。MariaDB 不保证跨存储引擎事务的 ACID(原子性、一致性、隔离性、持久性)。尽管可以在数据库实例中同时使用 InnoDB 和 MyRocks 表,但我们不建议使用这种方法,除非在从一个存储引擎迁移到另一个存储引擎的过程中。数据库实例中同时存在 InnoDB 和 MyRocks 表时,每个存储引擎都有自己的缓冲池,这可能会导致性能降低。

MyRocks 不支持 SERIALIZABLE 隔离或 gap 锁定。因此,通常不能将 MyRocks 与基于语句的复制结合使用。有关更多信息,请参阅 MyRocks 和复制

目前,您只能修改以下 MyRocks 参数:

MyRocks 存储引擎和 InnoDB 存储引擎可根据 rocksdb_block_cache_sizeinnodb_buffer_pool_size 参数的设置争用内存。在某些情况下,您可能只打算在特定数据库实例上使用 MyRocks 存储引擎。如果是这样,我们建议将 innodb_buffer_pool_size minimal 参数设置为最小值并将 rocksdb_block_cache_size 设置为尽可能高。

您可以使用 DescribeDBLogFilesDownloadDBLogFilePortion 操作来访问 MyRocks 日志文件。

有关 MyRocks 的更多信息,请参阅 MariaDB 网站上的 MyRocks

Amazon RDS 上的 MariaDB 的缓存预热

InnoDB 高速缓存预热可为您的 MariaDB 实例提供性能收益,方式是在数据库实例关闭时保存缓冲池的当前状态,然后在数据库实例启动时从保存的信息重新加载缓冲池。此方法将不再需要缓冲池使用常规数据库进行“预热”,而是预加载具有已知常见查询的页的缓冲池。有关缓存预热的更多信息,请参阅 MariaDB 文档中的转储和还原缓冲池

原定设置情况下,在 MariaDB 10.3 和更高版本的数据库实例上启用缓存预热。要启用该功能,请将数据库实例的参数组中的 innodb_buffer_pool_dump_at_shutdowninnodb_buffer_pool_load_at_startup 参数设置为 1。更改参数组中的这些参数值将影响使用该参数组的所有 MariaDB 数据库实例。要为特定 MariaDB 数据库实例启用缓存预热,您可能需要为这些数据库实例创建新的参数组。有关参数组的信息,请参阅使用参数组

缓存预热主要为使用标准存储的数据库实例提高性能。如果您使用 PIOPS 存储,则通常看不到显著的性能收益。

重要

如果您的 MariaDB 数据库实例未正常关闭 (例如,在故障转移期间),则缓冲池状态将不会保存到磁盘。在此情况下,MariaDB 将在重新启动数据库实例时加载任何可用的缓冲池文件。这不会造成任何损害,但还原后的缓冲池可能不会反映缓冲池在重新启动前的最新状态。要确保您拥有启动时可用于预热 缓存的缓冲池的最新状态,建议您定期“按需”转储缓冲池。您可以按需转储或加载缓冲池。

您可创建事件来定期自动转储缓冲池。例如,以下语句创建一个名为 periodic_buffer_pool_dump 的事件,该事件每小时转储一次缓冲池。

CREATE EVENT periodic_buffer_pool_dump ON SCHEDULE EVERY 1 HOUR DO CALL mysql.rds_innodb_buffer_pool_dump_now();

有关更多信息,请参阅 MariaDB 文档中的事件

按需转储和加载缓冲池

您可以使用以下存储过程按需保存和加载 缓存:

Amazon RDS 不支持的 MariaDB 功能

Amazon RDS 上不支持以下 MariaDB 功能:

  • S3 存储引擎

  • 身份验证插件 – GSSAPI

  • 身份验证插件 – Unix Socket

  • Amazon Key Management 加密插件

  • 低于 10.6 的 MariaDB 版本的延迟复制

  • InnoDB 和 Aria 的本机 MariaDB 静态加密

    您可以按照 加密 Amazon RDS 资源 中的说明启用 MariaDB 数据库实例的加密。

  • HandlerSocket

  • 低于 10.6 的 MariaDB 版本的 JSON 表类型

  • MariaDB ColumnStore

  • MariaDB Galera 集群

  • 多源复制

  • 低于 10.6 的 MariaDB 版本的 MyRocks 存储引擎

  • 密码验证插件、simple_password_checkcracklib_password_check

  • Spider 存储引擎

  • Sphinx 存储引擎

  • TokuDB 存储引擎

  • 存储特定于引擎的对象属性,如 MariaDB 文档中的引擎定义的新表/字段/索引属性中所述

  • 表和表空间加密

  • Hashicorp 密钥管理插件

  • 并行运行两个升级

为了产生托管服务体验,Amazon RDS 不允许通过 shell 访问数据库实例,而仅限访问某些需要高级特权的系统过程和表。Amazon RDS 支持使用任何标准 SQL 客户端应用程序访问数据库实例上的数据库。Amazon RDS 不允许使用 Telnet、安全外壳(SSH)或 Windows 远程桌面连接直接从主机访问数据库实例。