MySQL-Speicherplatz in Adobe Commerce in der Cloud-Infrastruktur ist gering

Dieser Artikel bietet Lösungen für Fälle, in denen MySQL in Adobe Commerce nur über sehr wenig Platz oder keinen Speicherplatz für die Cloud-Infrastruktur zur Verfügung steht. Zu den Symptomen zählen Site-Ausfälle, Kunden, die nicht in der Lage sind, Produkte zum Warenkorb hinzuzufügen, nicht in der Lage, eine Verbindung zur Datenbank herzustellen, remote auf die Datenbank zuzugreifen und SSH nicht in den Knoten integrieren zu können. Zu den Symptomen gehören auch Galera-, Umgebungs-, PHP-, Datenbank- und Bereitstellungsfehler, wie unten aufgeführt. Klicks Lösung , um direkt zum Lösungsabschnitt zu springen.

Betroffene Produkte und Versionen

Adobe Commerce für Cloud-Infrastruktur 2.3.0-2.3.6-p1, 2.4.0-2.4.2

Problem

Die Datenbank wird zu groß. Zu den Symptomen zählen der Verlust der Datenbankverbindung, ein Fehler beim Hochladen der Datenbank und eine Vielzahl anderer Probleme.

Eventuelle Fehler:

Galera:

  • SQLSTATE[08S01]: Kommunikationslink-Fehler: 1047 WSREP hat den Knoten für die Anwendungsnutzung noch nicht vorbereitet Importfehler:
  • SQLSTATE[HY000]: Allgemeiner Fehler: 1180 Got error 5 "Input/output error"
  • SQLSTATE[08S01]: Kommunikationslink-Fehler: 1047 WSREP hat den Knoten für die Anwendungsnutzung noch nicht vorbereitet

Fehler bei der Umgebungssynchronisierung:

  • SQLSTATE: Allgemeiner Fehler: 1180 Got error 5 "Input/output error" während COMMIT

PHP-Fehler:

  • php: PDO:__konstrukt(): MySQL Server ist weg.
  • php errors: PDO:__struct(): Fehler beim Lesen des Grußpakets. PID=NNN.
  • ERROR 2013 (HY000): Verlorene Verbindung zum MySQL-Server beim Lesen des anfänglichen Kommunikationspakets, Systemfehler: 0 "Interner Fehler/Prüfung (kein Systemfehler)".

Datenbankfehler:

  • Fehler_code: 1114
  • InnoDB: Fehler (Nicht genügend Speicherplatz) beim Schreiben des Wortknotens in die FTS-Hilfsindextabelle.
  • SQLSTATE[HY000]: Allgemeiner Fehler: MySQL-Server 2006 wurde entfernt
  • [FEHLER] Slave SQL: Fehler 'Die Tabelle <table\_name> ist voll' auf Abfrage.
  • Die Einheit mysql.service ist in den Status "Fehlgeschlagen"versetzt.
  • Fehler: 'Kann über Socket '/var/run/mysqld/mysqld.sock' keine Verbindung zum lokalen MySQL-Server herstellen (111 "Verbindung verweigert")'
  • 1205 Zeitüberschreitung bei Sperrung überschritten; Versuch, die Transaktion neu zu starten, Abfrage lautete: IN `cron_schedule` (`job_code`, `status`, `created_at`, `scheduled_at`) WERTE (?, ?, YYYY-02-07 HH:MM:SS, YYYY-MM-DD HH:MM:SS)

Bereitstellungsfehler:

  • E: Befehl '['sudo', '-u', <environment name>, 'bash', '-c', '/etc/platform/<environment name>/post_deploy.sh']' zurückgegebener Ausstiegsstatus 255 ungleich null
  • E: Befehl '['ssh', u<node IP address>, 'sudo /usr/bin/sv -w 30 Neustart Site-<environment name>g-nginx']' zurückgegeben ungleich null
  • Aktualisierungsschema… SQLSTATE[HY000]: Allgemeiner Fehler: 1114 Die Tabelle <table\_name> ist voll
  • SQLSTATE[HY000]: Allgemeiner Fehler: 3 Fehler beim Schreiben der Datei ./<environment name>/#
  • W: <filename> (Fehler: 28 "Auf dem Gerät ist kein Speicherplatz mehr vorhanden") Indizierungsfehler (zusammen mit verwaisten temporären .ibd-Dateien in /tmp):
  • Der Indexer für Katalogregeln gibt eine Ausnahme aus. Die temporären Tabellen werden im Nachhinein nicht bereinigt und füllen dann die Festplatte auf dem aktuellen MySQL-Master-Knoten aus

Zu reproduzierende Schritte:

Eine der Möglichkeiten, um zu überprüfen, ob die /data/mysql (oder wo auch immer die MySQL-Datenspeicherung konfiguriert ist) voll ist, indem Sie den folgenden Befehl in der CLI ausführen:

df -h

Weniger als 10 % des freien Speichers auf der MySQL-Festplatte ist ein primärer Indikator für einen Ausfall.

Ursache

Die /data/mysql Die Bereitstellung kann aufgrund einer Reihe von Problemen vollständig sein, z. B. aufgrund unzureichender Impfungen, verfügbarer Speicherkapazität und schlechter Abfragen, die temporäre Tabellen generieren.

Lösung

Es gibt einen sofortigen Schritt, den Sie unternehmen könnten, um MySQL wieder auf den richtigen Weg zu bringen (oder zu verhindern, dass es blockiert wird): Freiräumen Sie, indem Sie große Tabellen leeren.

Aber eine langfristige Lösung wäre die Zuteilung von mehr Raum und folgendes Best Practices für Datenbanken, einschließlich der Aktivierung der Archiv für Bestellung/Rechnung/Versand Funktionalität.

Im Folgenden finden Sie Details zu schnellen und langfristigen Lösungen.

Checken und Freigeben von Anschlüssen

Stellen Sie sicher, dass genügend verfügbare Nodes vorhanden sind. Führen Sie dazu den folgenden Befehl aus:

df -i

Die Ausgabe würde in etwa wie folgt aussehen:

Filesystem Inodes   Used   Free Use% Mounted on
/dev/nvme2n1 655360    1695  653665    1% /data/mysql

Stellen Sie sicher, dass "Use %"< 70 % ist. Knoten werden mit Dateien korreliert. Wenn Sie Dateien aus der Partition entfernen, werden Sie Inodes freigeben.

Speicherplatz einchecken und freigeben

Überprüfen Sie den verfügbaren Speicherplatz. Führen Sie dazu Folgendes aus:

df -k

Die Ausgabe würde der folgenden ähneln:

Size Used Avail Use% Mounted on·
       50G 49G 95M 100% /data/mysql

Wenn die Option % verwenden > 70 % beträgt, müssen Sie Maßnahmen ergreifen, um Speicherplatz freizugeben/hinzuzufügen.

Überprüfen auf große ibtmp1 files

Überprüfen auf große ibtmp1 Datei auf /data/mysql jedes Knotens: Diese Datei ist der Tablespace für temporäre Tabellen. Wenn fehlerhafte Abfragen vorliegen, die temporäre Tabellen generieren, sind sie im ibtmp1 -Datei. Diese Datei wird nur entfernt, wenn die Datenbank neu gestartet wird. Wenn der gesamte verfügbare Speicherplatz belegt wird, muss die Datenbank neu gestartet werden. Bei fehlerhaften Abfragen wird sie erneut erstellt.

Große Tabellen leeren

WARNING
Es wird dringend empfohlen, eine Datenbanksicherung zu erstellen, bevor Sie Manipulationen durchführen und sie bei hohen Site-Ladezeiten vermeiden. Siehe Datenbank ablegen in unserer Entwicklerdokumentation.

Überprüfen Sie, ob große Tabellen vorhanden sind, und überlegen Sie, ob eine davon geleert werden kann. Führen Sie dies auf dem primären (Quell-)Knoten durch.

Beispielsweise können Tabellen mit Berichten in der Regel geleert werden. Weitere Informationen zum Auffinden großer Tabellen finden Sie unter Suchen von großen MySQL-Tabellen Artikel.

Wenn keine großen Berichtstabellen vorhanden sind, sollten Sie eine Leerung erwägen. _index -Tabellen, um die Adobe Commerce-Anwendung wieder auf Kurs zu bringen. index_price -Tabellen wären die besten Kandidaten. Beispiel: catalog_category_product_index_storeX -Tabellen, wobei X Werte von "1"bis zur maximalen Speicheranzahl aufweisen kann. Beachten Sie bitte, dass Sie eine Neuindizierung durchführen müssen, um Daten in diesen Tabellen wiederherzustellen. Im Falle großer Kataloge kann diese Neuindizierung viel Zeit in Anspruch nehmen.

Nachdem Sie sie geleert haben, warten Sie auf den Abschluss der Browsersynchronisierung. Sie können jetzt Backups erstellen und bedeutendere Schritte durchführen, um mehr Platz hinzuzufügen, z. B. mehr Speicherplatz zuzuweisen/zu kaufen und Archiv für Bestellung/Rechnung/Versand Funktionalität.

Überprüfen der binären Protokollierungseinstellungen

Überprüfen Sie die binären Protokollierungseinstellungen für den MySQL-Server: log_bin und log_bin_index. Wenn die Einstellungen aktiviert sind, werden die Protokolldateien möglicherweise riesig. Support-Ticket erstellen Anforderung zum Bereinigen großer binärer Protokolldateien. Stellen Sie außerdem sicher, dass die binäre Protokollierung korrekt konfiguriert ist, damit Protokolle regelmäßig bereinigt werden und nicht zu viel Platz benötigt wird.

Wenn Sie keinen Zugriff auf die Einstellungen des MySQL-Servers haben, bitten Sie um Unterstützung, diese zu überprüfen.

Mehr Speicherplatz zuweisen/kaufen

Weisen Sie MySQL mehr Speicherplatz zu, wenn Sie noch nicht gebraucht haben. Siehe Überprüfen der Festplattenspeicherplatzbegrenzung -Artikel, um zu erfahren, wie Sie überprüfen können, ob Sie freien Speicherplatz haben.

  • Für den Starter-Plan, alle Umgebungen und die Pro-Plan-Integrationsumgebungen können Sie den Festplattenspeicher zuweisen, wenn Sie nicht mehr verwendet werden. Weitere Informationen finden Sie unter Mehr Platz für MySQL zuweisen.
  • Für Staging- und Produktionsumgebungen pro Plan, Support kontaktieren um mehr Speicherplatz zuzuweisen, falls Sie noch nicht genügend Speicherplatz haben.

Wenn Sie Ihre Speicherplatzbeschränkung erreicht haben und dennoch Probleme mit wenig Speicherplatz auftreten, sollten Sie sich für weitere Informationen an Ihr Adobe Account Team wenden.

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