Amazon RDS 上的 MariaDB 功能支持
RDS for MariaDB 支持 MariaDB 的大部分特性和功能。有些功能可能仅提供有限的支持或受限制的权限。
您可以在数据库的新增功能?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_NUMBER
、SFORMAT
以及RANDOM_BYTES
。SFORMAT
允许字符串格式化,且原定设置情况下处于启用状态。只需一条命令即可将分区转换为表和将表转换为分区。围绕JSON_*()
函数还有一些改进。在 10.10 及更高版本中,已弃用DES_ENCRYPT
和DES_DECRYPT
函数。有关更多信息,请参阅 SFORMAT。 -
InnoDB 增强功能 – 这些增强功能包括以下项目:
-
重做日志的性能改进,以减少写入放大并提高并发性。
-
无需重新初始化数据目录,即可更改撤消表空间。此增强功能减少了控制面板开销。它要求重启,但在更改撤消表空间后不需要重新初始化。
-
支持
CHECK TABLE … EXTENDED
和内部索引降序。 -
改进了批量插入功能。
-
-
二进制日志更改 – 这些更改包括以下项目:
-
分两个阶段记录
ALTER
以减少复制延迟。原定设置情况下,binlog_alter_two_phase
参数处于禁用状态,但可以通过参数组启用。 -
记录
explicit_defaults_for_timestamp
。 -
如果事务可以安全地回滚,则不再记录
INCIDENT_EVENT
。
-
-
复制改进 – 如果主服务器支持 GTID 复制,则 MariaDB 版本 10.11 数据库实例原定设置情况下使用此功能。另外,
Seconds_Behind_Master
更精确。 -
客户端 – 您可以将新的命令行选项用于
mysqlbinglog
和mariadb-dump
。您可以使用mariadb-dump
转储和还原历史数据。 -
系统版本控制 – 您可以修改历史记录。MariaDB 会自动创建新的分区。
-
原子 DDL –
CREATE OR REPLACE
现在是原子的。语句要么成功,要么完全相反。 -
重做日志写入 – 重做日志异步写入。
-
存储函数 – 存储函数现在支持存储过程中的相同
IN
、OUT
和INOUT
参数。 -
已弃用或移除的参数– 对于 MariaDB 版本 10.11 数据库实例,以下参数已弃用或删除:
-
动态参数 – 对于 MariaDB 版本 10.11 数据库实例,以下参数现在是动态的:
-
参数的新原定设置值 – 对于 MariaDB 版本 10.11 数据库实例,以下参数具有新的原定设置值:
-
explicit_defaults_for_timestamp
参数的原定设置值已从 OFF
更改为ON
。 -
optimizer_prune_level
参数的原定设置值已从 1
更改为2
。
-
-
参数的新有效值 – 对于 MariaDB 版本 10.11 数据库实例,以下参数具有新的有效值:
-
histogram_type
参数的有效值现在包括 JSON_HB
。 -
innodb_log_buffer_size
参数的有效值范围现在为 262144
至4294967295
(256KB 至 4096MB)。 -
innodb_log_file_size
参数的有效值范围现在为 4194304
至512GB
(4MB 至 512GB)。 -
optimizer_prune_level
参数的有效值现在包括 2
。
-
新参数 – 对于 MariaDB 版本 10.11 数据库实例,以下参数是新的:
-
binlog_alter_two_phase
参数可以改善复制性能。 -
log_slow_min_examined_row_limit
参数可以改善性能。 -
log_slow_query
参数和 log_slow_query_file 参数分别为 slow_query_log
和slow_query_log_file
的别名。
-
有关所有功能和文档的列表,请参阅 MariaDB 网站上的以下信息。
版本 | 更改和改进 | 发布说明 |
---|---|---|
MariaDB 10.7 | MariaDB 10.7 中的更改和改进 |
发行说明 - MariaDB 10.7 系列 |
MariaDB 10.8 | MariaDB 10.8 中的更改和改进 |
发行说明 - MariaDB 10.8 系列 |
MariaDB 10.9 | MariaDB 10.9 中的更改和改进 |
发行说明 - MariaDB 10.9 系列 |
MariaDB 10.10 | MariaDB 10.10 中的更改和改进 |
发行说明 - MariaDB 10.10 系列 |
MariaDB 10.11 | MariaDB 10.11 中的更改和改进 |
发行说明 - MariaDB 10.11 系列 |
有关不支持功能的列表,请参阅 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 TABLE
、ALTER TABLE
、RENAME TABLE
、DROP TABLE
、DROP DATABASE
和相关的 DDL 语句现在是原子的。要么语句成功,要么完全相反。有关更多信息,请参阅原子 DDL。 -
其他增强功能 - 这些增强功能包括在 SQL 中将 JSON 数据转换为关系格式的
JSON_TABLE
功能,以及使用 Innodb 更快地加载空表数据。它们还包括用于分析和故障排除的新sys_schema
,用于忽略未使用索引的优化器增强以及性能改进。有关更多信息,请参阅 JSON_TABLE。 -
参数的新默认值 – 对于 MariaDB 10.6 版本数据库实例,以下参数具有新的默认值:
-
以下参数的默认值已从
utf8
更改为utf8mb3
:尽管这些参数的默认值已更改,但功能没有变化。有关更多信息,请参阅 MariaDB 文档中的支持的字符集和排序规则
。 -
collation_connection
参数的默认值已从 utf8_general_ci
更改为utf8mb3_general_ci
。尽管此参数的默认值已更改,但功能没有变化。 -
old_mode
参数的默认值已从未设置更改为 UTF8_IS_UTF8MB3
。尽管此参数的默认值已更改,但功能没有变化。
-
有关所有 MariaDB 10.6 功能的列表及其文档,请参阅 MariaDB 网站上的 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 版本数据库实例,以下参数具有新的默认值:
-
max_connections
参数的默认值已更改为 LEAST({DBInstanceClassMemory/25165760},12000)
。有关LEAST
参数函数的信息,请参阅 数据库参数函数。 -
innodb_adaptive_hash_index
参数的默认值已更改为 OFF
(0
)。 -
innodb_checksum_algorithm
参数的默认值已更改为 full_crc32
。 -
innodb_log_file_size
参数的默认值已更改为 2 GB。
-
有关所有 MariaDB 10.5 功能的列表及其文档,请参阅 MariaDB 网站上的 MariaDB 10.5 中的更改和改进
有关不支持功能的列表,请参阅 Amazon RDS 不支持的 MariaDB 功能。
Amazon RDS 上的 MariaDB 10.4 支持
对于运行 MariaDB 版本 10.4 或更高版本的数据库实例,Amazon RDS 支持以下新功能:
-
优化程序增强 – 优化程序跟踪功能
-
InnoDB 增强 – 即时 DROP COLUMN 支持
以及 VARCHAR
和ROW_FORMAT=DYNAMIC
的即时ROW_FORMAT=COMPACT
扩展 -
新参数 – 包括 tcp_nodedelay
、tls_version 和 gtid_cleanup_batch_size
有关所有 MariaDB 10.4 功能的列表及其文档,请参阅 MariaDB 网站上的 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 中的更改和改进
有关不支持功能的列表,请参阅 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_size
和 innodb_buffer_pool_size
参数的设置争用内存。在某些情况下,您可能只打算在特定数据库实例上使用 MyRocks 存储引擎。如果是这样,我们建议将 innodb_buffer_pool_size minimal
参数设置为最小值并将 rocksdb_block_cache_size
设置为尽可能高。
您可以使用 DescribeDBLogFiles
和 DownloadDBLogFilePortion
操作来访问 MyRocks 日志文件。
有关 MyRocks 的更多信息,请参阅 MariaDB 网站上的 MyRocks
Amazon RDS 上的 MariaDB 的缓存预热
InnoDB 高速缓存预热可为您的 MariaDB 实例提供性能收益,方式是在数据库实例关闭时保存缓冲池的当前状态,然后在数据库实例启动时从保存的信息重新加载缓冲池。此方法将不再需要缓冲池使用常规数据库进行“预热”,而是预加载具有已知常见查询的页的缓冲池。有关缓存预热的更多信息,请参阅 MariaDB 文档中的转储和还原缓冲池
原定设置情况下,在 MariaDB 10.3 和更高版本的数据库实例上启用缓存预热。要启用该功能,请将数据库实例的参数组中的 innodb_buffer_pool_dump_at_shutdown
和 innodb_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 文档中的事件
按需转储和加载缓冲池
您可以使用以下存储过程按需保存和加载 缓存:
要将缓冲池的当前状态转储到磁盘,请调用 mysql.rds_innodb_buffer_pool_dump_now 存储过程。
要从磁盘加载缓冲池的已保存状态,请调用 mysql.rds_innodb_buffer_pool_load_now 存储过程。
要取消正在进行的加载操作,请调用 mysql.rds_innodb_buffer_pool_load_abort 存储过程。
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_check
和cracklib_password_check
-
Spider 存储引擎
-
Sphinx 存储引擎
-
TokuDB 存储引擎
-
存储特定于引擎的对象属性,如 MariaDB 文档中的引擎定义的新表/字段/索引属性
中所述 -
表和表空间加密
-
Hashicorp 密钥管理插件
-
并行运行两个升级
为了产生托管服务体验,Amazon RDS 不允许通过 shell 访问数据库实例,而仅限访问某些需要高级特权的系统过程和表。Amazon RDS 支持使用任何标准 SQL 客户端应用程序访问数据库实例上的数据库。Amazon RDS 不允许使用 Telnet、安全外壳(SSH)或 Windows 远程桌面连接直接从主机访问数据库实例。