

# Amazon Aurora 中的建议参考
<a name="USERRecommendationsManage.RecommendationReference"></a>

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


| 类型 | 描述 | 建议 | 需要停机 | 附加信息 | 
| --- | --- | --- | --- | --- | 
|  资源自动备份已关闭  |  您的数据库实例没有开启自动备份。建议使用自动备份，因为它们可以实现数据库实例的时间点恢复。  |  开启自动备份，保留期最长为 14 天。  |  是  |  [备份和还原 Aurora 数据库集群的概述](Aurora.Managing.Backups.md) Amazon 数据库博客上的 [Demystifying Amazon RDS backup storage costs](https://www.amazonaws.cn/blogs/database/demystifying-amazon-rds-backup-storage-costs/)   | 
|  需要引擎次要版本升级  |  您的数据库资源未运行最新次要数据库引擎版本。最新的次要版本包含最新的安全修复和其它改进。  |  升级到最新的引擎版本。  |  是  |  [维护Amazon Aurora 数据库集群](USER_UpgradeDBInstance.Maintenance.md)  | 
|  增强监控已关闭  |  您的数据库资源未开启增强监控。增强监控提供用于监控和故障排除的实时操作系统指标。  |  打开增强监控。  |  否  |  [使用增强监控来监控操作系统指标](USER_Monitoring.OS.md)  | 
|  存储加密已关闭  |  Amazon RDS 支持使用您在 Amazon Key Management Service（Amazon KMS）中管理的密钥对所有数据库引擎进行静态加密。在采用 Amazon RDS 加密的活动数据库实例上，静态存储在存储中的数据会加密，类似于自动备份、只读副本和快照。 如果在创建 Aurora 数据库集群时未开启加密，则必须将解密后的快照还原到加密的数据库集群。  |  为数据库集群开启静态数据加密。  |  是  |  [Amazon Aurora 中的安全性](UsingWithRDS.md)  | 
|  所有实例都在同一可用区中的数据库集群  |  数据库集群目前位于单个可用区中。使用多个可用区来提高可用性。  |  将数据库实例添加到数据库集群中的多个可用区。  |  否  |  [Amazon Aurora 的高可用性](Concepts.AuroraHighAvailability.md)  | 
|  集群中具有异构实例大小的数据库实例  |  建议您对数据库集群中的所有数据库实例使用相同的数据库实例类和大小。  |  对数据库集群中的所有数据库实例使用相同的实例类和大小。  |  是  |  [使用 Amazon Aurora 进行复制](Aurora.Replication.md)  | 
|  集群中具有异构实例类的数据库实例  |  建议您对数据库集群中的所有数据库实例使用相同的数据库实例类和大小。  |  对数据库集群中的所有数据库实例使用相同的实例类和大小。  |  是  |  [使用 Amazon Aurora 进行复制](Aurora.Replication.md)  | 
|  集群中具有异构参数组的数据库实例  |  我们建议数据库集群中的所有数据库实例使用同一数据库参数组。  |  将数据库实例和与数据库集群中的写入器实例关联的数据库参数组相关联。  |  否  |  [Amazon Aurora 的参数组](USER_WorkingWithParamGroups.md)  | 
| Amazon RDS 数据库集群有一个数据库实例 | 向数据库集群再添加至少一个数据库实例，以提高可用性和性能。 | 将读取器数据库实例添加到数据库集群。 | 否 |  [Amazon Aurora 的高可用性](Concepts.AuroraHighAvailability.md)  | 
| 性能详情已关闭 | 性能详情用于监控数据库实例负载，有助于您分析和解决数据库性能问题。建议您开启性能详情。 | 开启性能详情。 | 否 |  [在 Amazon Aurora 上使用性能详情监控数据库负载](USER_PerfInsights.md)  | 
|  需要更新 RDS 资源主要版本 | 不支持使用数据库引擎当前主要版本的数据库。建议您升级到包含新功能和增强功能的最新主要版本。 | 升级至数据库引擎的最新主要版本。 | 是 |  [Amazon Aurora 更新](Aurora.Updates.md) [在 Amazon Aurora 中创建蓝绿部署](blue-green-deployments-creating.md)  | 
| 数据库集群卷大小上限 | 较新的引擎版本支持为您的数据库集群提供更大的存储卷。 | 建议您将数据库集群的引擎版本升级到最新版本，以从增加的存储容量中受益。 | 是 |  [Amazon Aurora 大小限制](CHAP_Limits.md#RDS_Limits.FileSize.Aurora)  | 
| 数据库集群的所有读取器实例都在同一可用区中 | 在每个 Amazon 区域内，可用区（AZ）是相互不同的位置，以便在发生中断时提供隔离。建议您将数据库集群中的主实例和读取器实例分配到多个可用区，以提高数据库集群的可用性。在创建集群时，您可以使用 Amazon 管理控制台、Amazon CLI 或 Amazon RDS API 创建多可用区集群。您可以通过添加新的读取器实例并指定不同的可用区，修改现有 Aurora 集群以转为多可用区集群。 | 您的数据库集群的所有读取实例都在同一可用区中。建议您将读取器实例分布在多个可用区中。这一分布可提高可用性，并通过减少客户端与数据库之间的网络延迟来缩短响应时间。 | 否 |  [Amazon Aurora 的高可用性](Concepts.AuroraHighAvailability.md)  | 
| 数据库内存参数与默认值不同 | 数据库实例的内存参数与默认值明显不同。这些设置可能会影响性能并导致错误。 建议您将数据库实例的自定义内存参数重置为数据库参数组中的默认值。  | 将内存参数重置为其默认值。 | 否 |  [Amazon Aurora 的参数组](USER_WorkingWithParamGroups.md)  | 
| 查询缓存参数已开启 | 当更改要求清除查询缓存时，您的数据库实例将显示为停滞状态。大多数工作负载不会受益于查询缓存。查询缓存已从 MySQL 8.0 及更高版本中删除。建议您将 query\$1cache\$1type 参数设置为 0。 | 在数据库参数组中将 `query_cache_type` 参数值设置为 `0`。 | 是 |  [Amazon Aurora 的参数组](USER_WorkingWithParamGroups.md)  | 
| `log_output` 参数设置为表 | 如果 `log_output` 设置为 `TABLE`，则使用的存储比 `log_output` 设置为 `FILE` 时更多。建议您将此参数设置为 `FILE`，以避免达到存储大小限制。在 MySQL 8.4 及更高版本中默认设置为 `FILE`。 | 在数据库参数组中将 `log_output` 参数值设置为 `FILE`。 | 否 |  [AuroraMySQL 数据库日志文件](USER_LogAccess.Concepts.MySQL.md)  | 
| `autovacuum` 参数已关闭 | 数据库集群 的 autovacuum 参数已关闭. 关闭 autovacuum 会增加表和索引膨胀并影响性能。 建议您在数据库参数组中开启 autovacuum。  | 在数据库集群参数组中开启 autovacuum 参数。 | 否 |  Amazon 数据库博客上的 [Understanding autovacuum in Amazon RDS for PostgreSQL environments](https://www.amazonaws.cn/blogs/database/understanding-autovacuum-in-amazon-rds-for-postgresql-environments/)  | 
| `synchronous_commit` 参数已关闭 | 关闭 `synchronous_commit` 参数后，数据库崩溃可能会导致数据丢失。数据库的持久性受到威胁。 建议您开启此 `synchronous_commit` 参数。  | 在数据库参数组中开启 `synchronous_commit` 参数。 | 是 |  Amazon 数据库博客上的 [Amazon Aurora PostgreSQL parameters: Replication, security, and logging](https://www.amazonaws.cn/blogs/database/amazon-aurora-postgresql-parameters-part-2-replication-security-and-logging/)。  | 
| `track_counts` 参数已关闭 | 当 `track_counts` 参数处于关闭状态时，数据库不会收集数据库活动统计数据。Autovacuum 需要这些统计信息才能正常工作。 建议您将 `track_counts` 参数设置为 `1`。 | 将 `track_counts` 数据设置为 `1`。 | 否 |  [PostgreSQL 的运行时统计数据](https://www.postgresql.org/docs/current/runtime-config-statistics.html#GUC-TRACK-COUNTS)   | 
| `enable_indexonlyscan` 参数已关闭 | 关闭仅限索引的扫描计划类型时，查询计划程序或优化程序无法使用该类型。 建议您将 `enable_indexonlyscan` 参数值设置为 `1`。 | 将 `enable_indexonlyscan` 参数值设置为 `1`。 | 否 |  [PostgreSQL 的计划程序方法配置](https://www.postgresql.org/docs/current/runtime-config-query.html#GUC-ENABLE-INDEXONLYSCAN)  | 
| `enable_indexscan` 参数已关闭 | 关闭索引扫描计划类型时，查询计划程序或优化程序无法使用该类型。 建议您将 `enable_indexscan` 值设置为 `1`。 | 将 `enable_indexscan` 参数值设置为 `1`。 | 否 |  [PostgreSQL 的计划程序方法配置](https://www.postgresql.org/docs/current/runtime-config-query.html#GUC-ENABLE-INDEXONLYSCAN)  | 
| `innodb_flush_log_at_trx` 参数已关闭 | 您的数据库实例的 `innodb_flush_log_at_trx` 参数值不是安全的值。此参数控制向磁盘提交操作的持久性。 建议您将 `innodb_flush_log_at_trx` 参数设置为 `1`。 | 将 `innodb_flush_log_at_trx` 参数值设置为 `1`。 | 否 |  [配置刷新日志缓冲区的频率](AuroraMySQL.BestPractices.FeatureRecommendations.md#AuroraMySQL.BestPractices.Flush)  | 
| `innodb_stats_persistent` 参数已关闭 | 您的数据库实例未配置为将 InnoDB 统计信息持久保存到磁盘上。如果不存储统计数据，则每次实例重启和访问表时都会重新计算统计数据。这会导致查询执行计划的差异。您可以在表级别修改此全局参数的值。 建议您将 `innodb_stats_persistent` 参数值设置为 `ON`。 | 将 `innodb_stats_persistent` 参数值设置为 `ON`。 | 否 |  [Amazon Aurora 的参数组](USER_WorkingWithParamGroups.md)  | 
| `innodb_open_files` 参数较低 | `innodb_open_files` 参数控制 InnoDB 一次可打开的文件数量。当 mysqld 运行时，InnoDB 会打开所有日志和系统表空间文件。 对于您的数据库实例，InnoDB 一次可打开的最大文件数的值较低。建议您将 `innodb_open_files` 参数设置为最小值 `65`。 | 将 `innodb_open_files` 参数设置为最小值 `65`。 | 是 | [InnoDB 对于 MySQL 打开的文件](https://dev.mysql.com/doc/refman/5.7/en/innodb-parameters.html#sysvar_innodb_open_files)  | 
| `max_user_connections` 参数较低 | 对于您的数据库实例，每个数据库账户的最大同时连接数的值较低。 建议您将 `max_user_connections` 参数设置为大于 `5` 的数字。 | 将 `max_user_connections` 参数的值增加到大于 `5` 的数字。 | 是 | [设置 MySQL 的账户资源限制](https://dev.mysql.com/doc/refman/8.0/en/user-resources.html) | 
| 只读副本在可写模式下打开 | 您的数据库实例的只读副本处于可写模式，这允许来自客户端的更新。 建议您将 `read_only` 参数设置为 `TrueIfReplica`，这样只读副本就不会处于可写模式。 | 将 `read_only` 参数值设置为 `TrueIfReplica`。 | 否 |  [Amazon Aurora 的参数组](USER_WorkingWithParamGroups.md)  | 
| `innodb_default_row_format` 参数设置不安全 | 您的数据库实例遇到一个已知问题：当索引超过 767 字节时，在低于 8.0.26 的 MySQL 版本中创建且 `row_format` 设置为 `COMPACT` 或 `REDUNDANT` 的表将不可访问且无法恢复。 建议您将 `innodb_default_row_format` 参数值设置为 `DYNAMIC`。 | 将 `innodb_default_row_format` 参数值设置为 `DYNAMIC`。 | 否 | [MySQL 8.0.26 中的变化](https://dev.mysql.com/doc/relnotes/mysql/8.0/en/news-8-0-26.html#mysqld-8-0-26-bug) | 
| `general_logging` 参数已开启 | 您的数据库实例已开启常规日志记录。在排查数据库问题时，此设置非常有用。但是，开启常规日志记录会增加 I/O 操作量和分配的存储空间量，这可能导致争用和性能降级。 请检查您对常规日志记录使用情况的要求。建议您将 `general_logging` 参数值设置为 `0`。 | 请检查您对常规日志记录使用情况的要求。如果它不是强制性的，建议您将 `general_logging` 参数值设置为 `0`。 | 否 |  [Aurora MySQL 数据库日志概览](USER_LogAccess.MySQL.LogFileSize.md)  | 
| 数据库集群的读取工作负载预调配不足 | 建议您向数据库集群添加读取器数据库实例，实例类和大小与集群中的写入器数据库实例相同。当前配置中有一个数据库实例的数据库负载持续很高，这主要是由读取操作造成的。通过向集群添加另一个数据库实例并将读取工作负载定向到数据库集群只读端点来分配这些操作。 | 向集群添加读取器数据库实例。 | 否 | [将 Aurora 副本添加到数据库集群](aurora-replicas-adding.md) [管理 Aurora 数据库集群的性能和扩展](Aurora.Managing.Performance.md) [Amazon RDS 定价](https://www.amazonaws.cn/rds/pricing/)  | 
| RDS 实例的系统内存容量预调配不足 | 建议您调整查询以使用更少的内存，或者使用所分配内存更高的数据库实例类型。当实例内存不足时，数据库性能就会受到影响。 | 使用内存容量更高的数据库实例 | 是 |  Amazon 数据库博客上的 [Scaling Your Amazon RDS Instance Vertically and Horizontally](https://www.amazonaws.cn/blogs/database/scaling-your-amazon-rds-instance-vertically-and-horizontally/) [Amazon RDS 实例类型](https://www.amazonaws.cn/rds/instance-types/) [Amazon RDS 定价](https://www.amazonaws.cn/rds/pricing/)  | 
| RDS 实例的系统 CPU 容量预调配不足 | 建议您调整查询来使用更少的 CPU，或修改数据库实例来使用所分配的 vCPU 更高的数据库实例类。当运行数据库实例的 CPU 容量不足时，数据库性能可能会下降。 | 使用 CPU 容量更高的数据库实例 | 是 |  Amazon 数据库博客上的 [Scaling Your Amazon RDS Instance Vertically and Horizontally](https://www.amazonaws.cn/blogs/database/scaling-your-amazon-rds-instance-vertically-and-horizontally/) [Amazon RDS 实例类型](https://www.amazonaws.cn/rds/instance-types/) [Amazon RDS 定价](https://www.amazonaws.cn/rds/pricing/)  | 
| RDS 资源未正确地利用连接池 | 建议您启用 Amazon RDS 代理，以便高效地池化和共享现有数据库连接。如果您已经在为数据库使用代理，请正确地配置代理，来改善多个数据库实例之间的连接池和负载均衡。RDS 代理有助于降低连接耗尽和停机的风险，同时提高可用性和可扩展性。 | 启用 RDS 代理或修改现有的代理配置 | 否 |  Amazon 数据库博客上的 [Scaling Your Amazon RDS Instance Vertically and Horizontally](https://www.amazonaws.cn/blogs/database/scaling-your-amazon-rds-instance-vertically-and-horizontally/) [适用于 Aurora 的Amazon RDS 代理](rds-proxy.md) [Amazon RDS 代理定价](https://www.amazonaws.cn/rds/proxy/pricing/)  | 