与 Aurora MySQL 兼容的本地存储中存储了什么?如何排查本地存储问题?

上次更新日期:2022 年 5 月 26 日

与 Amazon Aurora MySQL 兼容的本地存储中存储了什么?如何排查存储容量问题?

简短描述

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

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

有关本地存储大小的更多信息,以及每种实例大小可用的最大存储量,请参阅 Aurora MySQL 的临时存储限制

解决方法

“免费存储容量低”错误

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

“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.(数据库实例的可用存储容量:instance-name 的可用存储容量低,仅为预置存储的 x% [预置存储:xx GB,可用存储:xx GB]。您可能需要增加预置的存储空间来解决此问题。)”

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

SHOW GLOBAL STATUS LIKE 'created_tmp%tables';

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

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

如果需要更多存储空间,可以增加您的本地存储。要增加本地存储,您必须增加您的数据库实例类。有关更多信息,请参阅 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(错误 1114(HY000):表“table-name”已满)”

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