MySQL Speicherplatz auf Adobe Commerce in der Cloud-Infrastruktur ist knapp
Dieser Artikel bietet Lösungen für Fälle, in denen nur sehr wenig oder kein Speicherplatz für MySQL auf Adobe Commerce in der Cloud-Infrastruktur vorhanden ist. Zu den Symptomen zählen Standortausfälle, Kunden, die keine Produkte in den Warenkorb legen können, keine Verbindung zur Datenbank herstellen können, Remote-Zugriff auf die Datenbank und keine Möglichkeit, SSH in den Knoten einzufügen. Zu den Symptomen gehören auch Galera-, Umgebungs-, PHP-, Datenbank- und Bereitstellungsfehler, wie unten aufgeführt. Klicken Sie auf Lösung, um direkt zum Abschnitt „Lösung“ zu springen.
Betroffene Produkte und Versionen
Adobe Commerce auf 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 u. a. der Verlust der Datenbankverbindung, ein Fehler beim Hochladen der Datenbank und eine Vielzahl anderer Probleme.
Fehler, auf die Sie stoßen können:
Galera:
- SQLSTATE[08S01]: Kommunikationsverbindungsfehler: 1047 WSREP hat den Knoten noch nicht für die Verwendung durch die Anwendung vorbereitet Importfehler:
- SQLSTATE[HY000]: Allgemeiner Fehler: 1180 Fehler 5 „Eingabe/Ausgabe-Fehler“
- SQLSTATE[08S01]: Kommunikationsverbindungsfehler: 1047 WSREP hat den Knoten noch nicht für die Verwendung durch die Anwendung vorbereitet
Fehler bei der Umgebungssynchronisierung:
- SQLSTATE: Allgemeiner Fehler: 1180 hat Fehler 5 „Eingabe/Ausgabe-Fehler“ während des COMMIT erhalten
PHP-Fehler:
- php: PDO::__struct(): MySQL Server ist verschwunden.
- php-Fehler: PDO::__struct(): Fehler beim Lesen des Grußpakets. PID=NNN.
- ERROR 2013 (HY000): Verbindung zu MySQL Server beim 'Lesen des ersten Kommunikationspakets' unterbrochen, Systemfehler: 0 „Interner Fehler/Überprüfung (Nicht Systemfehler)“.
Datenbankfehler:
- ERROR_CODE: 1114
- InnoDB: Fehler (Nicht genügend Speicherplatz) beim Schreiben des Word-Knotens in die FTS-Hilfs-Indextabelle.
- SQLSTATE[HY000]: Allgemeiner Fehler: 2006 MySQL Server wurde entfernt
- [ERROR] Slave SQL: Fehler 'Die
<table\_name>
ist voll' bei der Abfrage. - Unit mysql.service ist in den Fehlerstatus übergegangen.
- Fehler: 'Verbindung zum lokalen MySQL-Server über Socket '/var/run/mysqld/mysqld.sock' nicht möglich (111 „Verbindung verweigert„)'
- 1205 Sperrwartezeitlimit überschritten. Versuchen Sie, die Transaktion neu zu starten. Abfrage war: INSERT INTO `cron_schedule` (`job_code`, `status`, `created_at`, `scheduled_at`) VALUES (?, ?,
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']' hat den Exitstatus 255 zurückgegeben, der nicht null ist - E: Befehl '['ssh', u
<node IP address>
, 'sudo /usr/bin/sv -w 30 restart site-<environment name>
g-nginx']' ergab einen Wert ungleich null - Schema wird aktualisiert… 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>
(Errcode: 28 „No space left on device„) Indizierungsfehler (zusammen mit verwaisten temporären .ibd-Dateien in /tmp): - Katalogregel-Indexer löst eine Ausnahme aus. Die temporären Tabellen werden im Anschluss nicht bereinigt und füllen dann die Festplatte auf dem aktuellen MySQL Master-Knoten
Schritte zur Reproduktion:
Sie können unter anderem überprüfen, ob die /data/mysql
(oder wo auch immer MySQL Datenspeicher konfiguriert ist) voll ist, indem Sie den folgenden Befehl in der CLI ausführen:
df -h
Weniger als 10 % des freien Speichers auf MySQL Festplatte ist ein primärer Indikator für einen Ausfall.
Ursache
Die /data/mysql
-Bereitstellung könnte aufgrund einer Reihe von Problemen ausgelastet sein, z. B. weil nicht genügend Inodes, verfügbarer Speicherplatz und fehlerhafte Abfragen vorhanden sind, die temporäre Tabellen generieren.
Lösung
Es gibt einen sofortigen Schritt, den Sie unternehmen können, um MySQL wieder auf den richtigen Weg zu bringen (oder zu verhindern, dass es stecken bleibt): Machen Sie Platz frei, indem Sie große Tische spülen.
Eine langfristige Lösung bestünde jedoch darin, mehr Speicherplatz zuzuweisen und den Best Practices für Datenbank zu folgen, einschließlich der Aktivierung der Funktion Bestellung/Rechnung/Versand.
Im Folgenden finden Sie Details zu schnellen und langfristigen Lösungen.
Überprüfen und Freigeben von Knoten
Stellen Sie sicher, dass ausreichend Knoten verfügbar 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
Überprüfen, ob % Verwendung < 70 % ist. Inodes sind mit Dateien korreliert. Wenn Sie Dateien aus der Partition entfernen, werden Inodes freigegeben.
Überprüfen und Freigeben von Speicherplatz
Überprüfen Sie den verfügbaren Speicherplatz. Führen Sie dazu Folgendes aus:
df -k
Die Ausgabe würde in etwa wie folgt aussehen:
Size Used Avail Use% Mounted on·
50G 49G 95M 100% /data/mysql
Wenn der Wert % > 70 % ist, müssen Sie Maßnahmen ergreifen, um Speicherplatz freizugeben bzw. hinzuzufügen.
Auf große ibtmp1
prüfen
Auf große ibtmp1
-Dateien /data/mysql
jedem Knoten prüfen: Diese Datei ist der Tablespace für temporäre Tabellen. Wenn es ungültige Abfragen gibt, die temporäre Tabellen generieren, sind diese in der ibtmp1
enthalten. Diese Datei wird nur entfernt, wenn die Datenbank neu gestartet wird. Wenn sie den gesamten verfügbaren Speicherplatz belegt, muss die Datenbank neu gestartet werden. Wenn ungültige Abfragen vorhanden sind, wird sie erneut erstellt.
Große Tabellen spülen
Überprüfen Sie, ob große Tabellen vorhanden sind, und prüfen Sie, ob eine davon geleert werden kann. Gehen Sie dazu auf dem primären Knoten (Quellknoten) vor.
Beispielsweise können Tabellen mit Berichten normalerweise geleert werden. Weitere Informationen zum Suchen großer Tabellen finden Sie im Artikel Suchen MySQL großen Tabellen.
Wenn keine großen Berichtstabellen vorhanden sind, sollten Sie _index
Tabellen leeren, um die Adobe Commerce-Anwendung wieder auf den richtigen Weg zu bringen. index_price
Tabellen wären die besten Kandidaten. Beispiel: catalog_category_product_index_storeX
Tabellen, bei denen X Werte von „1“ bis zur maximalen Speicheranzahl aufweisen kann. Beachten Sie, dass Sie eine Neuindizierung durchführen müssen, um die Daten in diesen Tabellen wiederherzustellen. Bei großen Katalogen kann diese Neuindizierung sehr lange dauern.
Warten Sie nach dem Leeren auf den Abschluss der WSREP-Synchronisierung. Sie können jetzt Sicherungskopien erstellen und wichtigere Schritte ausführen, um mehr Speicherplatz hinzuzufügen, z. B. mehr Speicherplatz zuweisen/kaufen und die Funktion Bestellung/Rechnung/ aktivieren.
Überprüfen der binären Protokollierungseinstellungen
Überprüfen Sie die Binärprotokollierungseinstellungen Ihres MySQL-Servers: log_bin
und log_bin_index
. Wenn die Einstellungen aktiviert sind, können die Protokolldateien sehr groß werden. Erstellen Sie ein Support-Ticket mit der Aufforderung, große Binärlogdateien zu bereinigen. Vergewissern Sie sich außerdem, dass die Binärprotokollierung korrekt konfiguriert ist, sodass Protokolle regelmäßig bereinigt werden und nicht zu viel Speicherplatz beanspruchen.
Wenn Sie keinen Zugriff auf MySQL Server-Einstellungen haben, bitten Sie den Support um Überprüfung.
Mehr Speicherplatz zuweisen/kaufen
Weisen Sie mehr Speicherplatz für MySQL zu, wenn Sie nicht verwendeten Speicherplatz haben. Informationen Überprüfen, ob Sie über freien Speicherplatz verfügen finden Sie im Artikel „Überprüfen des Speicherplatzlimits“.
- Für den Starter-Plan, alle Umgebungen und Pro-Plan-Integrationsumgebungen können Sie den Speicherplatz zuweisen, wenn Sie einige ungenutzte haben. Weitere Informationen finden Sie unter Mehr Platz zuweisen für MySQL.
- Bei Pro Plan Staging- und Produktionsumgebungen wenden Sie sich an den, um bei ungenutzten Festplatten mehr Speicherplatz zuzuweisen.
Wenn Sie Ihr Speicherplatzlimit erreicht haben und weiterhin Probleme mit wenig Speicherplatz haben, sollten Sie ggf. weiteren Speicherplatz kaufen. Wenden Sie sich für weitere Informationen an Ihr Adobe-Account-Team.
Verwandtes Lesen
Best Practices zum Ändern von Datenbanktabellen im Commerce-Implementierungs-Playbook