Knowledge Center Monthly Newsletter - March 2025
Stay up to date with the latest from the Knowledge Center. See all new and updated Knowledge Center articles published in the last month and re:Post’s top contributors.
Come posso risolvere l'errore "MySQL HA_ERR_RECORD_FILE_FULL" quando utilizzo Amazon RDS per MySQL?
Quando scrivo su un'istanza database Amazon Relational Database Service (Amazon RDS) per MySQL o leggo le repliche, ricevo un errore. Nell'istanza database Amazon RDS per MySQL, ottengo quanto segue: "ERROR 1114 (HY000): The table 'Table Name' is full." Nelle repliche in lettura, nel campo Last_Error di show slave status (Amazon RDS per MySQL 5.7) o show replica status (Amazon RDS per MySQL 8.0), ricevo quanto segue: “Error_code: 1114; handler error HA_ERR_RECORD_FILE_FULL”
Breve descrizione
Questi errori si verificano nelle repliche in lettura che causano l'errore della replica o quando la tabella in cui vengono scritti i dati è piena. Anche i seguenti problemi causano questo errore:
- La tabella che invia il messaggio di errore è una tabella del motore MEMORY e raggiunge la sua dimensione massima.
- La tabella è una tabella del motore MyISAM e raggiunge la dimensione massima del puntatore.
- La tabella utilizza il motore InnoDB e il file tablespace InnoDB è pieno.
- L'istanza database Amazon RDS ha esaurito lo spazio su disco.
- La tabella raggiunge il limite di dimensione del file.
Per ulteriori informazioni, consulta Motori di archiviazione supportati per RDS per MySQL.
Risoluzione
La tabella del motore MEMORY ha raggiunto la dimensione massima
Per verificare se la tabella del motore MEMORY ha raggiunto la dimensione massima, esegui un comando simile al seguente esempio:
mysql> show table status from database_name like <YourTableName>\G
Se il valore data_length nell'output è maggiore del valore max_data_length, la tabella ha raggiunto la dimensione massima.
Per risolvere questo errore, aumenta la dimensione del parametro max_heap_table_size nel gruppo di parametri personalizzati associato all'istanza database. Per ulteriori informazioni, consulta Creazione di un gruppo di parametri database in Amazon RDS. Non superare il limite di memoria della classe di istanza database basato sulla classe di istanza database utilizzata.
La tabella del motore MyISAM ha raggiunto la dimensione massima del puntatore
Per verificare se la tabella del motore MyISAM ha raggiunto la dimensione massima del puntatore, esegui un comando simile al seguente:
mysql> show table status from database_name like <YourTableName>\G
Per risolvere questo errore, utilizza il comando ALTER TABLE per modificare la dimensione massima della tabella esistente:
mysql> ALTER TABLE tbl_name MAX_ROWS=1000000000 AVG_ROW_LENGTH=nnn;
Facoltativamente, puoi modificare il limite di dimensione predefinito per tutte le tabelle MyISAM. Quindi imposta il parametro myisam_data_pointer_size nel gruppo di parametri database personalizzato su un valore più alto.
Il file tablespace InnoDB è pieno
La dimensione massima del tablespace per una tabella InnoDB è di quattro miliardi di pagine (16 TB). Puoi partizionare le tabelle in più file tablespace per tabelle di dimensioni superiori a 1 TB. Partiziona la tabella per RANGE, LIST e HASH in base al caso d'uso. Ad esempio, tronca i vecchi dati in base all'anno di creazione oppure crea partizioni separate per ogni anno. Per ulteriori informazioni, consulta Limiti delle dimensioni dei file MySQL in Amazon RDS e la documentazione MySQL relativa al partizionamento.
Importante: prima di implementare le modifiche in un ambiente di produzione, verifica attentamente gli effetti che il partizionamento potrebbe avere sull'applicazione.
Per convertire una tabella esistente in una tabella partizionata, utilizza un'istruzione ALTER TABLE simile al seguente esempio:
ALTER TABLE table_name PARTITION BY HASH(id) PARTITIONS 8;
Nota: quando converti una tabella esistente in una tabella partizionata, non recuperi lo spazio allocato per il tablespace InnoDB. Per recuperare lo spazio di InnoDB, consulta Perché la mia istanza database Amazon RDS per MySQL utilizza più spazio di archiviazione del previsto?
L'istanza database Amazon RDS ha esaurito lo spazio su disco
Se l'istanza database Amazon RDS è nello stato STORAGE_FULL, ricevi l'errore "HA_ERR_RECORD_FILE_FULL". Per risolvere questo errore, aggiungi altro spazio di archiviazione all'istanza database.
Facoltativamente, puoi utilizzare la metrica FreeStorageSpace di Amazon CloudWatch per monitorare lo spazio di archiviazione disponibile. Puoi anche abbonarti alla notifica degli eventi Spazio di archiviazione insufficiente di Amazon RDS. In questo modo, sarai avvisato quando l'istanza database consuma più del 90% dello spazio di archiviazione allocato.
La tabella ha raggiunto il limite di dimensione del file
Nota: alcune istanze database esistenti hanno un limite inferiore. Ad esempio, le istanze database MySQL create prima di aprile 2014 hanno un limite di dimensione per file e tabelle di 2 TB. Il limite di 2 TB per la dimensione dei file si applica anche alle istanze database o alle repliche in lettura create da snapshot del database eseguiti prima di aprile 2014. Il limite si applica indipendentemente da quando è stata creata l'istanza database.
Se hai un'istanza database con un limite di dimensione inferiore, utilizza mysqldump per creare un dump MySQL dei dati. Quindi importa i dati in una nuova istanza database con un limite più elevato.
Informazioni correlate

Contenuto pertinente
- AWS UFFICIALEAggiornata 4 mesi fa
- AWS UFFICIALEAggiornata 5 anni fa
- AWS UFFICIALEAggiornata 3 anni fa