Wie kann ich den Fehler „MySQL HA_ERR_RECORD_FILE_FULL“ beheben, wenn ich Amazon RDS für MySQL verwende?

Lesedauer: 4 Minute
0

Beim Versuch, in eine Amazon Relational Database Service (Amazon RDS) MySQL-DB-Instance zu schreiben, habe ich die folgende Fehlermeldung erhalten: „Fehlercode: 1114; Handler-Fehler HA_ERR_RECORD_FILE_FULL“ Wie kann ich diesen Fehler beheben?

Kurzbeschreibung

Dieser Fehler tritt am häufigsten bei Read Replicas auf, die dazu führen, dass die Replikation fehlschlägt, oder wenn die Tabelle, in die die Daten geschrieben werden, voll ist. Dieser Fehler kann auch eine der folgenden Ursachen haben:

  1. Die Tabelle, die die Fehlermeldung sendet, ist eine MEMORY-Engine-Tabelle, und die Tabelle hat ihre maximale Größe erreicht.
  2. Die Tabelle ist eine MyISAM-Engine-Tabelle, und die Tabelle hat die maximale Zeigergröße erreicht.
  3. Die Tabelle verwendet die InnoDB-Engine und die InnoDB-Tablespace-Datei ist voll.
  4. Der Amazon RDS-DB-Instance ist nicht mehr genügend Speicherplatz zur Verfügung.
  5. Die Tabelle hat die Dateigrößenbeschränkung erreicht.

Weitere Informationen zu den Speicher-Engines, die Amazon RDS unterstützt, finden Sie unter Unterstützte Speicher-Engines für MySQL auf Amazon RDS.

Behebung

Die MEMORY-Engine-Tabelle hat ihre maximale Größe erreicht

Stellen Sie sicher, dass die MEMORY-Engine-Tabelle ihre maximale Größe erreicht hat, indem Sie einen Befehl ähnlich dem folgenden ausführen und den Engine-Wert überprüfen:

mysql> show table status from database_name like 'table_name'\G

Wenn der Wert der Variablen data_length in der Ausgabe größer ist als der Wert der Variablen max_data_length, hat die Tabelle ihre maximale Größe erreicht. Dies ist die Ursache der Fehlermeldung.

Sie können diesen Fehler beheben, indem Sie die Größe des Parameters max_heap_table_size in der benutzerdefinierten Parametergruppe erhöhen, die Ihrer DB-Instance zugeordnet ist. Weitere Informationen finden Sie unter Erstellen einer DB-Parametergruppe. Achten Sie darauf, das Speicherlimit der DB-Instance-Klasse, das auf der von Ihnen verwendeten DB-Instance-Klasse basiert, nicht zu überschreiten. Weitere Informationen über den für Ihre DB-Instance verfügbaren Speicher finden Sie unter Amazon RDS-Instance-Typen.

Die MyISAM-Engine-Tabelle hat die maximale Zeigergröße erreicht

Stellen Sie sicher, dass die MyISAM-Engine-Tabelle die maximale Zeigergröße erreicht hat, indem Sie einen Befehl ähnlich dem folgenden ausführen und den Engine-Wert überprüfen:

mysql> show table status from database_name like 'table_name'\G

Sie können diesen Fehler beheben, indem Sie den Befehl ALTER TABLE verwenden, um die maximale Größe der vorhandenen Tabelle zu ändern:

mysql> ALTER TABLE tbl_name MAX_ROWS=1000000000 AVG_ROW_LENGTH=nnn;

Optional können Sie die Standardgrößenbeschränkung für alle MyISAM-Tabellen ändern. Stellen Sie dann den Parameter myisam_data_pointer_size in Ihrer benutzerdefinierten DB-Parametergruppe auf einen höheren Wert ein.

Die InnoDB-Tablespace-Datei ist voll

Die maximale Tablespace-Größe für eine InnoDB-Tabelle beträgt vier Milliarden Seiten (16 TB).

Sie können Tabellen für Tabellen, die größer als 1 TB sind, in mehrere Tablespace-Dateien partitionieren. Sie können verschiedene Partitionierungstypen wie RANGE, LIST und HASH verwenden, um Ihre Tabelle je nach Anwendungsfall zu partitionieren. Sie können beispielsweise die alten Daten auf der Grundlage des Jahres kürzen, in dem Sie sie erstellt haben, oder Sie können für jedes Jahr separate Partitionen erstellen. Weitere Informationen finden Sie unter MySQL-Dateigrößenbeschränkungen und in der MySQL-Dokumentation zur Partitionierung.

**Wichtig:**Testen Sie gründlich, welche Auswirkungen die Partitionierung auf Ihre Anwendung haben könnte, bevor Sie die Änderungen in einer Produktionsumgebung implementieren.

Sie können eine vorhandene Tabelle in eine partitionierte Tabelle konvertieren, indem Sie eine altertable-Anweisung verwenden, die der folgenden ähnelt:

ALTER TABLE table_name
PARTITION BY HASH(id)
PARTITIONS 8;

**Hinweis:**Durch die Konvertierung einer vorhandenen Tabelle in eine partitionierte Tabelle wird der für den InnoDB-Tablespace zugewiesene Speicherplatz nicht wiederhergestellt. Informationen zur Wiederherstellung des InnoDB-Speichers finden Sie unter Wie löse ich Probleme mit meiner Amazon RDS-MySQL-DB-Instance, die mehr Speicher als erwartet verwendet?

Die Amazon RDS-DB-Instance hat nicht genügend Speicherplatz

Wenn sich die Amazon RDS-DB-Instance im Status STORAGE_FULL befindet, erhalten Sie den Fehler HA_ERR_RECORD_FILE_FULL. Um diesen Fehler zu beheben, fügen Sie Ihrer DB-Instance mehr Speicherplatz hinzu. Weitere Informationen finden Sie unter Amazon RDS-DB-Instance, deren Speicherplatz knapp wird.

Optional können Sie den verfügbaren Speicherplatz für die DB-Instance mithilfe der Amazon CloudWatch FreeStorageSpace-Metrik überwachen. Weitere Informationen finden Sie in der Übersicht über die Überwachung von Amazon RDS. Sie können auch die Amazon RDS-Ereignisbenachrichtigung zu wenig Speicherplatz abonnieren, sodass Sie benachrichtigt werden, wenn Ihre DB-Instance mehr als 90% des zugewiesenen Speichers verbraucht. Weitere Informationen finden Sie unter Amazon RDS-Ereigniskategorien und -ereignismeldungen.

Die Tabelle hat die Dateigrößenbeschränkung erreicht

**Hinweis:**Für einige bestehende DB-Instances gilt ein niedrigeres Limit. Beispielsweise gilt für MySQL-DB-Instances, die vor April 2014 erstellt wurden, eine Datei- und Tabellengrößenbeschränkung von 2 TB. Diese Dateigrößenbeschränkung von 2 TB gilt auch für DB-Instances oder Read Replicas, die aus DB-Snapshots erstellt wurden, die vor April 2014 erstellt wurden, unabhängig davon, wann die DB-Instance erstellt wurde.

Wenn Sie eine DB-Instance mit einer niedrigeren Größenbeschränkung haben, können Sie mithilfe von mysqldump einen MySQL-Dump Ihrer Daten erstellen. Importieren Sie dann die Daten in eine neue DB-Instance, für die ein höheres Limit gilt.


Ähnliche Informationen

Wie löse ich Probleme, die auftreten, wenn den Amazon RDS-DB-Instances der Speicherplatz ausgeht?