Spazio su disco MySQL insufficiente in Adobe Commerce sull'infrastruttura cloud
In questo articolo vengono fornite soluzioni per i casi in cui lo spazio per MySQL su Adobe Commerce nell'infrastruttura cloud è molto ridotto o assente. I sintomi possono includere interruzioni del sito, impossibilità per i clienti di aggiungere prodotti al carrello, impossibilità di connettersi al database, accesso al database in remoto e impossibilità di SSH nel nodo. I sintomi includono anche Galera, sincronizzazione dell’ambiente, PHP, database ed errori di distribuzione come elencato di seguito. Fai clic su Soluzione per passare direttamente alla sezione della soluzione.
Prodotti e versioni interessati
Adobe Commerce sull’infrastruttura cloud 2.3.0-2.3.6-p1, 2.4.0-2.4.2
Problema
Il database diventa troppo grande. I sintomi possono includere perdita della connessione al database, errore di caricamento del database e una serie di altri problemi.
Errori che potresti riscontrare:
Galera:
- SQLSTATE[08S01]: errore collegamento di comunicazione: WSREP 1047 non ha ancora preparato il nodo per l'utilizzo dell'applicazione Errori di importazione:
- SQLSTATE[HY000]: Errore generale: 1180 Errore ricevuto 5 "Errore di input/output"
- SQLSTATE[08S01]: errore collegamento di comunicazione: WSREP 1047 non ha ancora preparato il nodo per l'utilizzo dell'applicazione
Errori di sincronizzazione ambiente:
- SQLSTATE: errore generale: 1180 Errore 5 "Errore di input/output" durante COMMIT
Errori PHP:
- php: PDO::__costrutto(): il server MySQL è scomparso.
- errori php: PDO::__costrutto(): errore durante la lettura del pacchetto di saluto. PID=NNNN.
- ERRORE 2013 (HY000): connessione al server MySQL interrotta durante la lettura del pacchetto di comunicazione iniziale. Errore di sistema: 0 "Errore interno/verifica (non errore di sistema)".
Errori database:
- Errore_code: 1114
- InnoDB: errore (spazio su disco insufficiente) durante la scrittura del nodo di Word nella tabella indice ausiliaria FTS.
- SQLSTATE[HY000]: errore generale: il server MySQL del 2006 è scomparso
- [ERROR] SQL secondario: Errore 'La tabella
<table\_name>
è piena' nella query. - L'unità mysql.service ha immesso lo stato non riuscito.
- errore: 'Impossibile connettersi al server MySQL locale tramite il socket '/var/run/mysqld/mysqld.sock' (111 "Connessione rifiutata")'
- 1205 Timeout attesa blocco superato. Provare a riavviare la transazione. Query: INSERT INTO `cron_schedule` (`job_code`, `status`, `created_at`, `scheduled_at`) VALORI (?, ?,
YYYY-02-07 HH:MM:SS
,YYYY-MM-DD HH:MM:SS
)
Errori di distribuzione:
- E: il comando '['sudo', '-u',
<environment name>
, 'bash', '-c', '/etc/platform/<environment name>
/post_deploy.sh']' ha restituito uno stato di uscita diverso da zero 255 - E: il comando '['ssh', u
<node IP address>
, 'sudo /usr/bin/sv -w 30 restart site-<environment name>
g-nginx']' ha restituito un valore diverso da zero - Aggiornamento dello schema… SQLSTATE[HY000]: Errore generale: 1114 Tabella
<table\_name>
piena - SQLSTATE[HY000]: errore generale: 3 Errore durante la scrittura del file ./
<environment name>
/# - W:
<filename>
(codice di errore: 28 "Spazio esaurito nel dispositivo") Errori di indicizzazione (insieme a file .ibd temporanei orfani in /tmp): - L'indicizzatore della regola catalogo genera un'eccezione. Le tabelle temporanee non vengono pulite in seguito e quindi riempiono il disco nel nodo master MySQL corrente
Passaggi da riprodurre:
Uno dei modi per verificare se l'archivio dati /data/mysql
(o dove è configurato MySQL) è pieno consiste nell'eseguire il comando seguente in CLI:
df -h
Meno del 10% della memoria disponibile sul disco MySQL è un indicatore primario di un'interruzione.
Causa
Il mount /data/mysql
potrebbe diventare pieno a causa di una serie di problemi, ad esempio la mancanza di un numero sufficiente di nodi, di spazio di archiviazione disponibile e di query non valide che generano tabelle temporanee.
Soluzione
È possibile prendere un'iniziativa immediata per riportare MySQL in pista (o impedire che si blocchi): liberare spazio scaricando le tabelle di grandi dimensioni.
Una soluzione a lungo termine, tuttavia, consiste nell'allocare più spazio e seguire le best practice per il database, inclusa l'abilitazione della funzionalità Archivio ordini/fatture/spedizioni.
Di seguito sono riportati dettagli sulle soluzioni rapide e a lungo termine.
Controllare e liberare gli interni
Assicurati che siano disponibili abbastanza nodi. A tale scopo, eseguire il comando seguente:
df -i
L’output sarà simile al seguente:
Filesystem Inodes Used Free Use% Mounted on
/dev/nvme2n1 655360 1695 653665 1% /data/mysql
Verificare che % d'uso sia <70%. Gli nodi sono correlati con i file. Se si rimuovono file dalla partizione, si libereranno gli inodi.
Controllare e liberare spazio di archiviazione
Controllare lo spazio di archiviazione disponibile. A questo scopo, esegui:
df -k
L’output sarà simile al seguente:
Size Used Avail Use% Mounted on·
50G 49G 95M 100% /data/mysql
Se % d'uso è > 70%, è necessario intervenire per liberare/aggiungere spazio.
Cerca file ibtmp1
di grandi dimensioni
Verificare la presenza di un file ibtmp1
di grandi dimensioni su /data/mysql
di ciascun nodo: questo file è la tablespace per le tabelle temporanee. Le eventuali query non valide che generano tabelle temporanee sono contenute nel file ibtmp1
. Questo file viene rimosso solo al riavvio del database. Se il database occupa tutto lo spazio disponibile, è necessario riavviarlo. Se sono presenti query non valide, verranno ricreate di nuovo.
Svuota tabelle di grandi dimensioni
Controlla se ci sono tabelle di grandi dimensioni e considera se una di esse può essere scaricata. Esegui questa operazione sul nodo principale (sorgente).
Ad esempio, le tabelle con i rapporti possono in genere essere scaricate. Per informazioni dettagliate su come trovare tabelle di grandi dimensioni, consulta l'articolo Find Large MySQL tables.
Se non sono presenti tabelle di report di grandi dimensioni, è consigliabile svuotare _index
tabelle per rimettere in sesto l'applicazione Adobe Commerce. index_price
tabelle sono le più idonee. Ad esempio, catalog_category_product_index_storeX
tabelle, dove X può avere valori da "1" al numero massimo di archivi. Tieni presente che dovrai reindicizzare per ripristinare i dati in queste tabelle e, nel caso di cataloghi di grandi dimensioni, questa reindicizzazione potrebbe richiedere molto tempo.
Una volta scaricati, attendere il completamento della sincronizzazione wsrep. È ora possibile creare backup e adottare misure più significative per aggiungere più spazio, ad esempio allocando/acquistando più spazio e abilitando la funzionalità Archivio ordini/fatture/spedizioni.
Verifica impostazioni di registrazione binaria
Controlla le impostazioni di registrazione binaria del server MySQL: log_bin
e log_bin_index
. Se le impostazioni sono attivate, i file di registro potrebbero diventare enormi. Crea un ticket di supporto richiedendo di eliminare file di registro binari di grandi dimensioni. Inoltre, verifica che la registrazione binaria sia configurata correttamente in modo che i registri vengano eliminati periodicamente e non richiedano troppo spazio.
Se non si dispone dell'accesso alle impostazioni del server MySQL, richiedere il supporto per la verifica.
Alloca/acquista più spazio
Allocare più spazio su disco per MySQL se ne sono inutilizzati alcuni. Consulta l'articolo Verifica il limite di spazio su disco per informazioni su come verificare se è disponibile spazio su disco.
- Per la combinazione Starter, tutti gli ambienti e gli ambienti Pro plan Integration, è possibile allocare lo spazio su disco se ne sono inutilizzati alcuni. Per ulteriori dettagli, vedere Allocare più spazio per MySQL.
- Per gli ambienti di produzione e staging del piano Pro, contatta il supporto per allocare più spazio su disco se ne sono inutilizzati alcuni.
Se hai raggiunto il limite di spazio e riscontri ancora problemi di spazio insufficiente, puoi acquistare altro spazio su disco. Per ulteriori informazioni, contatta il team dell’account Adobe.
Lettura correlata
Best practice per la modifica delle tabelle del database nel playbook di implementazione di Commerce