Amazon RDS 中的建议参考 - Amazon Relational Database Service

Amazon RDS 中的建议参考

Amazon RDS 在创建或修改资源时,为资源生成建议。可以在下表中找到 Amazon RDS 中的建议示例。

类型 描述 建议 需要停机 其他信息

磁性介质卷正在使用中

您的数据库实例在使用磁性介质存储。对于大多数数据库实例,不建议使用磁性介质存储。选择其它存储类型:通用型(SSD)或预调配 IOPS。

选择其它存储类型:通用型(SSD)或预调配 IOPS。

Amazon EC2 文档中的上一代卷

资源自动备份已关闭

您的数据库实例没有开启自动备份。建议使用自动备份,因为它们可以实现数据库实例的时间点恢复。

开启自动备份,保留期最长为 14 天。

启用自动备份

AWS 数据库博客上的 Demystifying Amazon RDS backup storage costs

需要引擎次要版本升级

您的数据库资源未运行最新次要数据库引擎版本。最新的次要版本包含最新的安全修复和其它改进。

升级到最新的引擎版本。

升级数据库实例引擎版本

增强监控已关闭

您的数据库资源未开启增强监控。增强监控提供用于监控和故障排除的实时操作系统指标。

打开增强监控。

使用增强监控来监控操作系统指标

存储加密已关闭

Amazon RDS 支持使用您在 AWS Key Management Service(AWS KMS)中管理的密钥对所有数据库引擎进行静态加密。在采用 Amazon RDS 加密的活动数据库实例上,静态存储在存储中的数据会加密,类似于自动备份、只读副本和快照。

如果在创建数据库实例时未开启加密,则需要先创建并还原数据库实例的解密快照的加密副本,然后再开启加密。

为您的数据库实例开启静态数据加密。

Amazon RDS 中的安全性

复制 Amazon RDS 的数据库快照

Performance Insights 已关闭

Performance Insights 用于监控数据库实例负载,有助于您分析和解决数据库性能问题。建议您开启 Performance Insights。

开启 Performance Insights。

在 Amazon RDS 上使用性能详情监控数据库负载

数据库实例已关闭存储自动扩缩

您的数据库实例没有开启存储自动扩缩功能。当数据库工作负载增加时,RDS 存储自动扩缩会自动扩展存储容量,且无停机时间。

使用指定的最大存储阈值启用 Amazon RDS 存储自动扩缩

使用 Amazon RDS 存储自动扩展功能自动管理容量

需要更新 RDS 资源主要版本

不支持使用数据库引擎当前主要版本的数据库。我们建议您升级到包含新功能和增强功能的最新主要版本。

升级至数据库引擎的最新主要版本。

升级数据库实例引擎版本

使用 Amazon RDS 蓝绿部署进行数据库更新

需要更新 RDS 资源实例类

您的数据库实例正在运行更早代次的数据库实例类。我们已经将更早代次的数据库实例类替换为成本和/或性能更高的数据库实例类。我们建议您使用更新代次的数据库实例类运行数据库实例。

升级数据库实例类。

数据库实例类支持的数据库引擎

RDS 资源使用的是随附许可证的终止支持引擎版本

我们建议您将主要版本升级到 Amazon RDS 支持的最新引擎版本,以继续使用当前的许可证支持。当前许可证不支持数据库的引擎版本。

我们建议您将数据库升级到 Amazon RDS 中支持的最新版本,以便继续使用许可模型。

Oracle 主要版本升级

数据库实例未使用多可用区部署

建议您使用多可用区部署。多可用区部署可增强数据库实例的可用性和持久性。

为受影响的数据库实例设置多可用区

在此更改期间,不会停机。不过,可能会对性能产生影响。有关更多信息,请参阅 将 Amazon RDS 的数据库实例转换为多可用区部署

Amazon RDS Multi-AZ 的定价

数据库内存参数与默认值不同

数据库实例的内存参数与默认值明显不同。这些设置可能会影响性能并导致错误。

我们建议您将数据库实例的自定义内存参数重置为数据库参数组中的默认值。

将内存参数重置为其默认值。

AWS 数据库博客上的 Best practices for configuring performance parameters for Amazon RDS for MySQL

InnoDB_Change_Buffering 参数使用的值小于最佳值

更改缓冲将允许 MySQL 数据库实例推迟维护二级索引所需的一些写入操作。此功能在磁盘速度较慢的环境中非常有用。更改缓冲配置稍微提高了数据库性能,但在升级期间导致了崩溃恢复延迟和长时间关机。

在数据库参数组中将 InnoDB_Change_Buffering 参数值设置为 NONE

AWS 数据库博客上的 Best practices for configuring performance parameters for Amazon RDS for MySQL

查询缓存参数已开启

当更改要求清除查询缓存时,您的数据库实例将显示为停滞状态。大多数工作负载不会受益于查询缓存。从 MySQL 8.0 版中删除了查询缓存。建议您将 query_cache_type 参数设置为 0。

在数据库参数组中将 query_cache_type 参数值设置为 0

AWS 数据库博客上的 Best practices for configuring performance parameters for Amazon RDS for MySQL

log_output 参数设置为表

如果 log_output 设置为 TABLE,则使用的存储比 log_output 设置为 FILE 时更多。我们建议您将此参数设置为 FILE,以避免达到存储大小限制。

在数据库参数组中将 log_output 参数值设置为 FILE

MySQL 数据库日志文件

参数组不使用大页

大页可以提高数据库的可扩展性,但您的数据库实例不使用大页。我们建议您在数据库实例的数据库参数组中将 use_large_pages 参数值设置为 ONLY

在数据库参数组中将 use_large_pages 参数值设置为 ONLY

为 RDS for Oracle 实例开启大页

autovacuum 参数已关闭

数据库实例 的 autovacuum 参数已关闭. 关闭 autovacuum 会增加表和索引膨胀并影响性能。

我们建议您在数据库参数组中开启 autovacuum。

在数据库参数组中开启 autovacuum 参数。

AWS 数据库博客上的 Understanding autovacuum in Amazon RDS for PostgreSQL environments

synchronous_commit 参数已关闭

关闭 synchronous_commit 参数后,数据库崩溃可能会导致数据丢失。数据库的持久性受到威胁。

建议您开启此 synchronous_commit 参数。

在数据库参数组中开启 synchronous_commit 参数。

AWS 数据库博客上的 Amazon Aurora PostgreSQL parameters: Replication, security, and logging

track_counts 参数已关闭

track_counts 参数处于关闭状态时,数据库不会收集数据库活动统计数据。Autovacuum 需要这些统计信息才能正常工作。

建议您将 track_counts 参数设置为 1

track_counts 数据设置为 1

PostgreSQL 的运行时统计数据

enable_indexonlyscan 参数已关闭

关闭仅限索引的扫描计划类型时,查询计划程序或优化程序无法使用该类型。

建议您将 enable_indexonlyscan 参数值设置为 1

enable_indexonlyscan 参数值设置为 1

PostgreSQL 的计划程序方法配置

enable_indexscan 参数已关闭

关闭索引扫描计划类型时,查询计划程序或优化程序无法使用该类型。

建议您将 enable_indexscan 值设置为 1

enable_indexscan 参数值设置为 1

PostgreSQL 的计划程序方法配置

innodb_flush_log_at_trx 参数已关闭

您的数据库实例的 innodb_flush_log_at_trx 参数值不是安全的值。此参数控制向磁盘提交操作的持久性。

建议您将 innodb_flush_log_at_trx 参数设置为 1

innodb_flush_log_at_trx 参数值设置为 1

AWS 数据库博客上的 Best practices for configuring performance parameters for Amazon RDS for MySQL

sync_binlog 参数已关闭

在数据库实例中确认事务提交之前,不会强制将二进制日志同步到磁盘。

建议您将 sync_binlog 参数值设置为 1

sync_binlog 参数值设置为 1

AWS 数据库博客上的 Best practices for configuring replication parameters for Amazon RDS for MySQL

innodb_stats_persistent 参数已关闭

您的数据库实例未配置为将 InnoDB 统计信息持久保存到磁盘上。如果不存储统计数据,则每次实例重启和访问表时都会重新计算统计数据。这会导致查询执行计划的差异。您可以在表级别修改此全局参数的值。

建议您将 innodb_stats_persistent 参数值设置为 ON

innodb_stats_persistent 参数值设置为 ON

AWS 数据库博客上的 Best practices for configuring performance parameters for Amazon RDS for MySQL

innodb_open_files 参数较低

innodb_open_files 参数控制 InnoDB 一次可打开的文件数量。当 mysqld 运行时,InnoDB 会打开所有日志和系统表空间文件。

对于您的数据库实例,InnoDB 一次可打开的最大文件数的值较低。我们建议您将 innodb_open_files 参数设置为最小值 65

innodb_open_files 参数设置为最小值 65

InnoDB 对于 MySQL 打开的文件

max_user_connections 参数较低

对于您的数据库实例,每个数据库账户的最大同时连接数的值较低。

我们建议您将 max_user_connections 参数设置为大于 5 的数字。

max_user_connections 参数的值增加到大于 5 的数字。

设置 MySQL 的账户资源限制

只读副本在可写模式下打开

您的数据库实例的只读副本处于可写模式,这允许来自客户端的更新。

我们建议您将 read_only 参数设置为 TrueIfReplica,这样只读副本就不会处于可写模式。

read_only 参数值设置为 TrueIfReplica

AWS 数据库博客上的 Best practices for configuring replication parameters for Amazon RDS for MySQL

innodb_default_row_format 参数设置不安全

您的数据库实例遇到一个已知问题:当索引超过 767 字节时,在低于 8.0.26 的 MySQL 版本中创建且 row_format 设置为 COMPACTREDUNDANT 的表将不可访问且无法恢复。

建议您将 innodb_default_row_format 参数值设置为 DYNAMIC

innodb_default_row_format 参数值设置为 DYNAMIC

MySQL 8.0.26 中的变化

general_logging 参数已开启

您的数据库实例已开启常规日志记录。在对数据库问题进行故障排除时,此设置非常有用。但是,开启常规日志记录会增加 I/O 操作量和分配的存储空间量,这可能导致争用和性能降级。

请检查您对常规日志记录使用情况的要求。建议您将 general_logging 参数值设置为 0

请检查您对常规日志记录使用情况的要求。如果它不是强制性的,我们建议您将 general_logging 参数值设置为 0

RDS for MySQL 数据库日志概览

RDS 实例的系统内存容量预调配不足

我们建议您调整查询以使用更少的内存,或者使用所分配内存更高的数据库实例类型。当实例内存不足时,数据库性能就会受到影响。

使用内存容量更高的数据库实例

AWS 数据库博客上的 Scaling Your Amazon RDS Instance Vertically and Horizontally

Amazon RDS 实例类型

Amazon RDS 定价

RDS 实例的系统 CPU 容量预调配不足

我们建议您调整查询来使用更少的 CPU,或修改数据库实例来使用所分配的 vCPU 更高的数据库实例类。当运行数据库实例的 CPU 容量不足时,数据库性能可能会下降。

使用 CPU 容量更高的数据库实例

AWS 数据库博客上的 Scaling Your Amazon RDS Instance Vertically and Horizontally

Amazon RDS 实例类型

Amazon RDS 定价

RDS 资源未正确地利用连接池

我们建议您启用 Amazon RDS 代理,以便高效地池化和共享现有数据库连接。如果您已经在为数据库使用代理,请正确地配置代理,来改善多个数据库实例之间的连接池和负载均衡。RDS 代理有助于降低连接耗尽和停机的风险,同时提高可用性和可扩展性。

启用 RDS 代理或修改现有的代理配置

AWS 数据库博客上的 Scaling Your Amazon RDS Instance Vertically and Horizontally

将 Amazon RDS 代理

Amazon RDS 代理定价

RDS 实例正在创建过多的临时对象

建议您调整工作负载以防止创建过多的临时对象,或者切换到支持优化读取的 RDS 实例类。RDS 优化型读取功能可提高涉及大量临时对象和/或大型临时对象的工作负载的数据库性能。评估您的工作负载,以确定使用具有 RDS 优化型读取功能的实例是否有利于您的数据库工作负载。

使用带 RDS 优化型读取功能的数据库实例类型

Amazon RDS 实例类型

使用 Amazon RDS 优化型读取功能提高 RDS for MySQL 的查询性能

使用 Amazon RDS 优化型读取功能提高 RDS for MariaDB 的查询性能

使用 Amazon RDS 优化型读取功能提高 RDS for PostgreSQL 的查询性能

RDS 实例的系统 IOPS 容量预调配不足

我们建议调整数据库工作负载以降低 IOPS,或者将数据库实例纵向扩展到具有更高的默认 IOPS 限制的类型。当前数据库实例无法支持预调配 IOPS,或者数据库工作负载具有较高的 IOPS 利用率。

使用默认 IOPS 限制更高的数据库实例类型

Amazon RDS 实例类型

Amazon RDS 数据库实例存储

数据库负载

RDS 实例具有预调配不足的 Amazon EBS 卷

我们建议调整数据库工作负载以降低 IOPS 或增加数据库的预调配 IOPS。当 IOPS 利用率接近预调配 IOPS 时,数据库性能可能会下降。

为数据库实例预调配更多 IOPS

Amazon RDS 实例类型

Amazon RDS 数据库实例存储

数据库负载

RDS 实例的吞吐能力预调配不足

我们建议调整数据库工作负载以降低吞吐量或增加数据库的预调配吞吐量。当吞吐量利用率接近预调配吞吐量时,数据库性能可能会受到影响。

为数据库实例预调配更多吞吐量

Amazon RDS 实例类型

Amazon RDS 数据库实例存储

数据库负载

RDS 实例的 EBS I/O 预置不足

我们建议调整数据库工作负载来减少 I/O 操作,或者修改数据库实例来使用 Amazon RDS io2 Block Express 卷,这些卷专为需要高性能、高吞吐量和低延迟的数据库工作负载而设计。在当前工作负载下,数据库可能无法以所需的速率处理 I/O 操作,这可能导致性能下降。

将 Amazon RDS io2 Block Express 卷用于 RDS 实例

Amazon RDS 数据库实例存储

Amazon RDS 的 Amazon CloudWatch 指标

《Amazon EBS 用户指南》中的 Provisioned IOPS SSD volumes