Global outage event
If you’re experiencing issues with your AWS services, then please refer to the AWS Health Dashboard. You can find the overall status of ongoing outages, the health of AWS services, and the latest updates from AWS engineers.
Perché la mia istanza database Amazon RDS per MySQL utilizza più spazio di archiviazione del previsto?
Desidero sapere perché la mia istanza database Amazon Relational Database Service (Amazon RDS) per MySQL utilizza più spazio del previsto. Desidero anche ottimizzare l'archiviazione su disco.
Risoluzione
Per monitorare lo spazio di archiviazione disponibile per un'istanza database Amazon RDS, puoi utilizzare la metrica FreeStorageSpace di Amazon CloudWatch. Tuttavia, la metrica FreeStorageSpace non mostra cosa utilizza lo spazio di archiviazione nell'istanza database. Per determinare cosa utilizza lo spazio di archiviazione e recuperarlo, utilizza i seguenti metodi.
Esegui OPTIMIZE TABLE
Le tabelle utilizzano solo spazio che non viene utilizzato attivamente. Tuttavia, Amazon RDS alloca comunque spazio alle tabelle. Se hai attivato innodb_file_per_table, puoi eseguire il comando OPTIMIZE TABLE per recuperarlo. Per ulteriori informazioni, consulta OPTIMIZE TABLE statement (Istruzione OPTIMIZE TABLE) sul sito web di MySQL.
Puoi utilizza OPTIMIZE TABLE per tabelle InnoDB, MyISAM e ARCHIVE. OPTIMIZE TABLE funziona quando crei la tabella in un tablespace separato in base all'impostazione di configurazione innodb_file_per_table predefinita di Amazon RDS. Per ulteriori informazioni, consulta File-per-table tablespaces (Tablespace file-per-table) sul sito web di MySQL.
Amazon RDS accetta il comando OPTIMIZE TABLE, ma in realtà esegue il comando ALTER TABLE...FORCE. In questo caso, ricevi un messaggio di avviso simile al seguente:
"Table does not support optimize, doing recreate + analyze instead."
Aggiorna le statistiche, quindi esegui questa query information_schema.tables per stimare l'utilizzo dello spazio di archiviazione sulla base delle statistiche aggiornate:
SELECT table_name, data_length, max_data_length, index_length, data_free FROM information_schema.tables WHERE table_schema='schema_name' ;
Nota: nella query precedente, aggiungi i valori per il caso d'uso.
La colonna data_free mostra la quantità di spazio disponibile allocato a una tabella ma non utilizzato attivamente.
Riduci lo spazio di archiviazione delle tabelle dell'applicazione
Per visualizzare lo spazio di archiviazione utilizzato dalle tabelle dell'applicazione su un'istanza database RDS MySQL, esegui questa query:
SELECT TABLESPACE_NAME, ROUND(DATA_FREE/EXTENT_SIZE,0) FREE_DATA_MB, FREE_EXTENTS FREE_EXTENTS_MB, TOTAL_EXTENTS TOTAL_EXTENTS_MB FROM INFORMATION_SCHEMA.FILES;
Per individuare la tabella dell'applicazione più grande sull'istanza database RDS MySQL, esegui questa query:
SELECT TABLESPACE_NAME, ROUND(DATA_FREE/EXTENT_SIZE,0) FREE_DATA_MB, FREE_EXTENTS FREE_EXTENTS_MB, TOTAL_EXTENTS TOTAL_EXTENTS_MB FROM INFORMATION_SCHEMA.FILES ORDER BY TOTAL_EXTENTS_MB DESC;
Nota: se un database include tabelle con colonne a lunghezza variabile più lunghe di 768 byte, non puoi calcolare singolarmente lo spazio di archiviazione utilizzato dal database e dalla tabella. Questa limitazione riguarda i comandi BLOB, TEXT, VARCHAR e VARBINARY.
Riduci lo spazio di archiviazione di un log binario
Se aggiungi una replica in lettura a un'istanza Amazon RDS, il log binario dell'istanza di origine utilizza spazio di archiviazione aggiuntivo. Per determinare la quantità di spazio di archiviazione utilizzata dal log binario nell'istanza di origine, verifica il parametro BinLogDiskUsage di CloudWatch. Se il log binario utilizza sempre più spazio di archiviazione, potrebbe essere necessario sincronizzare le repliche in lettura.
Riduci o disattiva l'archiviazione del log generale e del log query lente
Quando disattivi i parametri del log generale e del log query lente, l'istanza inizia ad archiviare i log e i backup dei log. Per ruotare i file e controllare l'utilizzo del disco, consulta mysql.rds_rotate_general_log e mysql.rds_rotate_slow_log.
Nota: è consigliabile disattivare il log generale e il log query lente se non servono per risolvere un problema.
Gestisci o riduci le dimensioni del tablespace di sistema InnoDB
Il tablespace di sistema inizia con 10 MB di spazio e contiene il dizionario dei dati InnoDB e lo spazio di annullamento. Dopo aver allocato lo spazio, il file è di almeno 10 MB e può utilizzare altro spazio di archiviazione disponibile.
Per impostazione predefinita, Amazon RDS imposta innodb_file_per_table su 1 in modo che il database archivi i dati per ogni tablespace nel suo file .ibd. Per recuperare spazio riutilizzabile per le tabelle correlate, utilizza OPTIMIZE TABLE per ridimensionare ogni file del tablespace della tabella. Oppure puoi eliminare una tabella.
Se imposti innodb_file_per_table su 0, Amazon RDS alloca tutte le tabelle al tablespace di sistema. Se elimini tabelle o indici, oppure se elimini o tronchi dati delle tabelle allocate nel sistema, il tablespace contrassegna lo spazio come riutilizzabile. Tuttavia, innodb_file_per_table non libera spazio per il file system.
Non puoi ridurre il tablespace di sistema nell'istanza in cui si trova. Per farlo, esporta i dati del database corrente importali in una nuova istanza. Per ridurre i tempi di inattività, configura la nuova istanza MySQL come replica dell'istanza Amazon RDS di origine. Quando la replica è sincronizzata con l'istanza Amazon RDS di origine, passa alla nuova istanza.
Nota: quando esegui il ripristino da uno snapshot o crei una replica in lettura, non recuperi spazio dal tablespace di sistema. Entrambi i metodi utilizzano uno snapshot del volume di archiviazione dell'istanza di origine che contiene il tablespace di sistema.
Informazioni correlate
Mancanza di spazio di storage per l'istanza di database Amazon RDS
Modifica di un'istanza database Amazon RDS
Come posso risolvere l'errore "MySQL HA_ERR_RECORD_FILE_FULL" quando utilizzo Amazon RDS per MySQL?
- Lingua
- Italiano
