Amazon Aurora for MySQL 的本地存储中存储了哪些内容?如何排查存储容量问题?

Aurora 集群中的实例具有两种类型的存储:

  • 持久性数据存储(称为集群卷)。需要更多空间时,此类型的存储容量会自动增加。有关更多信息,请参阅集群卷包含的内容
  • 集群中每个 Aurora 实例基于实例类的本地存储。此存储类型和大小取决于实例类,只有在移动至较大数据库实例类时才能更改。Aurora for MySQL 在本地存储中存储错误日志、常规日志、慢速查询日志、审计日志和非 InnoDB 临时表。

“免费存储容量低”错误

在您接近免费存储容量上限时,可能会收到以下错误:

“The free storage capacity for DB Instance: instance-name is low at x% of the provisioned storage [Provisioned Storage: xx GB, Free Storage: xx GB].You may want to increase the provisioned storage to address this issue.”

如果在本地存储中存储临时表和日志文件等非持久性数据,本地存储可能会达到容量上限。检查是否已经运行 ALTER TABLE 命令或存储的临时表是否过多。通过优化 ALTER 命令和临时表,您可以降低本地存储使用量。多次运行如下命令,以查看实例中的临时表数量:

SHOW GLOBAL STATUS LIKE 'created_tmp%tables';

要监控特定时间段内创建的临时表数量,您可以启用 GoSH。这允许您以表格形式存储服务器状态变量,以便稍后复查以供将来分析之用。

查看 Amazon CloudWatch 中的 FreeableMemory 指标,以确定可用内存大小。然后查看审计日志、常规日志或慢速查询日志是否占用空间。您可使用 CloudWatch 中的 FreeLocalStorage 指标,监控与 Aurora 实例相关的本地存储空间。有关更多信息,请参阅监控 Amazon Aurora 数据库集群指标

如果需要更多存储空间,可以增加您的本地存储。要增加本地存储,您必须增加您的数据库实例类。有关更多信息,请参阅更改数据库实例类

您还可以增大参数 max_heap_table_sizetmp_table_size 的值。修改这些参数可以减少溢出到磁盘的数据量,从而降低本地存储的使用量。您可以在附加到实例的参数组中修改这些参数。有关更多信息,请参阅修改数据库参数组中的参数

注意:如果增大 max_heap_table_sizetmp_table_size 的值,则这些表将占用更多实例内存。如果增大这些值,请确保实例上具有足够的可用内存。您可使用 CloudWatch 中的 FreeableMemory 指标监控可用内存。有关更多信息,请参阅使用指标确定性能问题

ERROR 1114 表已满

当 MySQL 执行 ALTER TABLE 之类的操作时,系统会使用新架构创建中间临时表。然后,MySQL 会将数据加载到中间表中,继而删除旧表。中间表可能会使用本地存储。如果中间表需要的存储空间不足,您可能会收到以下错误:

“ERROR 1114 (HY000): The table 'table-name' is full”

要解决此错误,您可以通过临时扩展实例来增加本地存储。ALTER TABLE 操作完成后,您可以缩减实例类。要增加本地存储,您必须增加 Aurora 实例类。有关更多信息,请参阅更改数据库实例类


此页内容对您是否有帮助? |

返回 AWS Support 知识中心

需要帮助? 请访问 AWS Support 中心

发布时间:2019 年 2 月 26 日