MySQL-schijfruimte is te klein voor Adobe Commerce op cloudinfrastructuur
Dit artikel biedt oplossingen voor problemen met erg weinig of geen ruimte voor MySQL op Adobe Commerce op cloudinfrastructuur. Symptomen zijn onder andere uitvallen van sites, klanten die geen producten aan het winkelwagentje kunnen toevoegen, die geen verbinding met de database kunnen maken, toegang hebben tot de database extern, en geen SSH in het knooppunt kunnen kiezen. Symptomen zijn onder andere Galera, Omgevingssync, PHP, Database en Implementatiefouten, zoals hieronder vermeld. Klik Oplossing om rechtstreeks aan de oplossingssectie te springen.
Beschrijving description
Probleem
De database wordt te groot. De symptomen kunnen onder andere het verlies van de databaseverbinding, de uploadfout voor de database en diverse andere problemen zijn.
Fouten die u kunt tegenkomen:
Galera:
- SQLSTATE
[
08S01]
: Communicatie verbindingsmislukking: 1047 WSREP heeft nog geen knoop voor de fouten van de Invoer van het toepassingsgebruik voorbereid: - SQLSTATE
[
HY000]
: Algemene fout: 1180 kreeg fout 5 "Input/output fout" - SQLSTATE
[
08S01]
: Communicatie verbindingsmislukking: 1047 WSREP heeft nog geen knoop voor toepassingsgebruik voorbereid
Synchronisatiefouten omgeving:
- SQLSTATE: Algemene fout: 1180 kreeg fout 5 "Input/output fout"tijdens BEVEL
PHP-fouten:
- php: BOB::__construct (): MySQL server is weggegaan.
- php fouten: BOB::__construct (): Fout terwijl het lezen van groet pakket. PID=NNNN.
- FOUT 2013 (HY000): Verloren verbinding aan server MySQL bij "lezing aanvankelijk communicatie pakket", systeemfout: 0 "Interne fout/controle (niet systeemfout)".
Database-fouten:
- Error_code: 1114
- InnoDB: Fout (uit schijfruimte) die woordknoop aan FTS hulpindexlijst schrijft.
- SQLSTATE
[
HY000]
: Algemene fout: De server van 2006 MySQL is weggegaan [
ERROR]
Slave SQL: Fout "De lijst<table_name>
is volledig"op vraag.- eenheid mysql.service ingegaan ontbroken staat.
- fout: "Kan niet met lokale server verbinden MySQL door contactdoos "/var/run/mysqld/mysqld.sock" (111 "Verbinding geweigerd")"
- De wachttijd voor vergrendeling van 1205 is overschreden. Probeer de transactie opnieuw te starten, de query was: INSERT INTO
cron_schedule
(job_code
,status
,created_at
,scheduled_at
) VALUES (?, ?,YYYY-02-07 HH:MM:SS
,YYYY-MM-DD HH:MM:SS
)
Implementatiefouten:
- E: Voor de opdracht "
[
"sudo", "-u",<environment name>
, "bash", "-c", "/etc/platform/<
omgevingsnaam>
/post_deploy.sh"]
" is de afsluitstatus niet gelijk aan nul gegeven 255 - E: Het bevel "
[
"ssh", u<
knoopIP adres>
, "sudo /usr/bin/sv -w 30 herstart plaats-<environment name>
g-nginx"]
"keerde niet-nul terug - Schema bijwerken… SQLSTATE
[
HY000]
: Algemene fout: 1114 De tabel<table_name>
is vol - SQLSTATE
[
HY000]
: Algemene fout: 3 Fout bij het schrijven van bestand./<environment name>
/# - W:
<filename>
(foutcode: 28 "Geen ruimte meer over op apparaat") Fouten indexeren (samen met zwevende tijdelijke .ibd-bestanden in /tmp): - de indexeerder van de Regel van de Catalogus werpt een uitzondering. De tijdelijke lijsten worden niet schoongemaakt in de nasleep en dan de schijf op de huidige MySQL hoofdknoop vullen
Stappen om te reproduceren:
Één van de manieren u kunt controleren als /data/mysql
(of waar MySQL gegevensopslag wordt gevormd) volledig is door het volgende bevel in CLI in werking te stellen:
df -h
Minder dan 10% van het vrije geheugen op de schijf MySQL is een primaire indicator van een stroomstoring.
Oorzaak
De hoeveelheid /data/mysql
kan vol worden als gevolg van een aantal problemen, zoals onvoldoende codes, beschikbare opslagruimte en onjuiste query's die tijdelijke tabellen genereren.
Resolutie resolution
Er is een onmiddellijke stap die u zou kunnen nemen om MySQL terug op het spoor te brengen (of het te verhinderen vastgelopen te worden): maak wat ruimte vrij door grote lijsten te spoelen.
Maar een oplossing op lange termijn zou meer ruimte en na beste praktijken van het Gegevensbestand toewijzen, met inbegrip van het toelaten van de Orde/Factuur/het archieffunctionaliteit van het Verzending .
Hieronder vindt u details over zowel snelle als langetermijnoplossingen.
Inodes controleren en vrijmaken
Zorg ervoor dat er voldoende inodes beschikbaar zijn. Voer hiertoe de volgende opdracht uit:
df -i
De uitvoer ziet er ongeveer als volgt uit:
Filesystem Inodes Used Free Use% Mounted on/dev/nvme2n1 655360 1695 653665 1% /data/mysql
Controleer of Gebruik % <
70% is. De knooppunten zijn gecorreleerd met bestanden. Als u bestanden uit de partitie verwijdert, worden de inodes vrijgemaakt.
Opslagruimte controleren en vrijmaken
Beschikbare opslagruimte controleren. Hiervoor voert u uit:
df -k
De uitvoer zou er ongeveer als volgt uitzien:
Size Used Avail Use% Mounted on· 50G 49G 95M 100% /data/mysql
Als Gebruik % >
70% is, moet u actie ondernemen om ruimte vrij te maken of toe te voegen.
Controleren op grote ibtmp1
bestanden
Controleren op groot ibtmp1
bestand op /data/mysql
van elk knooppunt: dit bestand vormt de tabelruimte voor tijdelijke tabellen. Als er ongeldige query's zijn die tijdelijke tabellen genereren, staan deze in het ibtmp1
-bestand. Dit bestand wordt alleen verwijderd wanneer de database opnieuw wordt gestart. Als het alle beschikbare ruimte in beslag neemt, moet de database opnieuw worden gestart. Als er slechte vragen zijn, zal het opnieuw worden ontspannen.
Grote tabellen uitvouwen
Waarschuwing : Wij adviseren sterk het creëren van een gegevensbestandsteun alvorens om het even welke manipulaties uit te voeren en hen tijdens de hoge periodes van de plaatslading te vermijden. Zie Dump uw gegevensbestand in onze ontwikkelaardocumentatie.
Controleer of er grote tabellen zijn en of een van deze tabellen kan worden verwijderd. Doe dit op het primaire (bron) knooppunt.
Tabellen met rapporten kunnen bijvoorbeeld meestal worden verwijderd. Voor details op hoe te om grote lijsten te vinden, zie Groot MySQL- lijsten artikel vinden.
Als er geen grote rapporttabellen zijn, kunt u _index
-tabellen leegmaken, gewoon om de Adobe Commerce-toepassing weer op schema te krijgen. index_price
-tabellen zijn de beste kandidaten. Bijvoorbeeld catalog_category_product_index_storeX
tabellen, waarin X waarden kan hebben van "1" tot het maximale aantal winkels. Onthoud dat u opnieuw moet indexeren om gegevens in deze tabellen te herstellen. In het geval van grote catalogi kan het veel tijd kosten om de gegevens opnieuw te indexeren.
Wacht tot de software volledig is gesynchroniseerd nadat u deze hebt verwijderd. U kunt steunen nu tot stand brengen en belangrijkere stappen nemen om meer ruimte toe te voegen, als het toewijzen van/het kopen van meer ruimte en het toelaten van functionaliteit van het archiefarchief 0} van de Orde/van de Rekening/van de Verzending.
Instellingen voor binaire logboekregistratie controleren
Controleer de binaire logboekinstellingen voor MySQL-servers: log_bin
en log_bin_index
. Als de instellingen zijn ingeschakeld, kunnen de logbestanden enorm worden. creeer een steunkaartje verzoekend om grote binaire logboekdossiers te zuiveren. Vraag ook om te controleren of de binaire logboekregistratie correct wordt geconfigureerd, zodat logbestanden regelmatig worden gewist en niet te veel ruimte in beslag nemen.
Als u geen toegang hebt tot MySQL-serverinstellingen, vraagt u om ondersteuning om deze te controleren.
Ongebruikte toegewezen schijfruimte vrijmaken
-
SSH in knoop één en login aan MySQL:
mysql -h127.0.0.1 -p
php - r "echo (omvat ("app/etc/env.php") [ "db "] [ "verbinding"] [ "gebrek"] [ "wachtwoord"];"-u
kinami ``kinami"Voor gedetailleerde stappen, verwijs naar verbinden en stel vragen tegen het gegevensbestand van Adobe Commerce in werking.
-
Controleren op ongebruikte ruimte:
code language-none SELECT table_name, round((data_length+index_length)/1048576,2) AS size_MB, round((data_free)/1048576,2) AS Allocated_but_unused FROM information_schema.tables WHERE data_free > 1048576*10 ORDER BY data_free DESC; Example output:
table 0-row-3 1-row-3 table_name size_MB Toegewezen_maar_ongebruikt sales_order_grid 28145,20 14943,00 Controleer de uitvoer om te zien of er geheugen is toegewezen maar dat niet wordt gebruikt. Dit gebeurt wanneer gegevens uit een tabel zijn verwijderd, maar het geheugen nog steeds aan die tabel is toegewezen.
-
Plaats uw site in de onderhoudsmodus en stop de taken voor uitsnijden zodat er geen interactie plaatsvindt in de database. Voor stappen, verwijs naar toelaten of onbruikbaar maken onderhoudswijze en maak kanonnen banen onbruikbaar.
-
Wis die ruimte door de tabel opnieuw te maken met de volgende opdracht (gebruik de bovenstaande tabel met de meest ongebruikte ruimte):
ALTER TABLE sales_order_grid Engine = "INNODB";
-
Stel de volgende vraag in werking om voor niet toegewezen ruimte voor elke lijst te controleren die een hoge waarde binnen de kolom Allocated_but_unused toont.
SELECT table_name, round((data_length+index_length)/1048576,2) as size_MB, round((data_free)/1048576,2) as Allocated_but_unused FROM information_schema.tables WHERE 1 AND data_free > 1048576*10 ORDER BY data_free DESC;
-
Nu maak onderhoudswijze onbruikbaar en laat kanonnen banen toe.
Meer ruimte toewijzen/kopen
Wijs meer schijfruimte toe voor MySQL als u wat ongebruikt hebt. Zie het de grens van de schijfruimte van de Controle artikel leren hoe te om te controleren als u vrije schijfruimte hebt.
- Voor het plan van de Aanzet, alle milieu's, en de milieu's van de Integratie van het Pro plan, kunt u de schijfruimte toewijzen als u wat ongebruikt hebt. Voor details, zie meer ruimte voor MySQL toewijzen.
- Voor Pro plan het Opvoeren en de milieu's van de Productie, contactsteun om meer schijfruimte toe te wijzen als u wat ongebruikt hebt.
- Als u uw ruimtelimiet hebt bereikt en nog steeds weinig ruimte hebt, kunt u overwegen meer schijfruimte te kopen. Neem contact op met uw Adobe-accountteam voor meer informatie.
Gerelateerde lezing
Beste praktijken voor het wijzigen van gegevensbestandlijsten in het Playbook van de Implementatie van Commerce