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

WARNING
Si consiglia vivamente di creare un backup del database prima di eseguire eventuali manipolazioni ed evitarle durante i periodi di caricamento elevato del sito. Vedi Scarica il database nella documentazione per gli sviluppatori.

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

recommendation-more-help
8bd06ef0-b3d5-4137-b74e-d7b00485808a