Allmänna riktlinjer för MySQL

Se Systemkrav för de versioner av MySQL som stöds.

Adobe starkt rekommenderar att du följer följande standard när du konfigurerar databasen:

  • Adobe Commerce använder MySQL-databasutlösare för att förbättra databasåtkomsten vid omindexering. Dessa skapas när indexerarläget är inställt på schema. Programmet stöder inte några anpassade utlösare i databasen eftersom anpassade utlösare kan orsaka inkompatibilitet med framtida Adobe Commerce-versioner.
  • Bekanta dig med dessa potentiella MySQL-utlösarbegränsningar innan du fortsätter.
  • Aktivera STRICT_ALL_TABLES SQL-läge för att förhindra att ogiltiga datavärden lagras, vilket kan orsaka oönskade databasinteraktioner.
  • Adobe Commerce gör not stöder MySQL-satsbaserad replikering. Se till att du använder endast radbaserad replikering.
WARNING
Adobe Commerce använder CREATE TEMPORARY TABLE programsatser inuti transaktioner, som inkompatibel med databasimplementeringar använder GTID-baserad replikering, som Andra generationens instanser av Google Cloud SQL. Överväg MySQL för Cloud SQL 8.0 som ett alternativ.
NOTE
Om webbservern och databasservern finns på olika värdar kan du utföra de uppgifter som beskrivs i det här avsnittet på databasservervärden och sedan se Konfigurera en MySQL-fjärrdatabasanslutning.

Installerar MySQL på Ubuntu

Adobe Commerce 2.4 kräver en ren installation av MySQL 8.0. Följ länkarna nedan för instruktioner om hur du installerar MySQL på datorn.

Om du tror att du kommer att importera ett stort antal produkter kan du öka värdet för max_allowed_packet som är större än standardvärdet, 16 MB.

NOTE
Standardvärdet gäller för Adobe Commerce i molninfrastrukturen och lokala projekt. Adobe Commerce i molninfrastruktur Pro-kunder måste öppna en supportbiljett för att öka max_allowed_packet värde. Adobe Commerce om molninfrastruktur Starter-kunder kan öka värdet genom att uppdatera konfigurationen i /etc/mysql/mysql.cnf -fil.

Öppna /etc/mysql/mysql.cnf i en textredigerare och leta reda på värdet för max_allowed_packet. Spara ändringarna i mysql.cnf stäng textredigeraren och starta om MySQL (service mysql restart).

Om du vill verifiera det värde du anger anger du följande kommando på mysql> fråga:

SHOW VARIABLES LIKE 'max_allowed_packet';

Sedan Konfigurera databasinstansen.

MySQL 8-ändringar

För Adobe Commerce 2.4 har vi lagt till stöd för MySQL 8.
I det här avsnittet beskrivs viktiga ändringar av MySQL 8 som utvecklare bör känna till.

Bredd för heltalstyper (utfyllnad) har tagits bort

Specifikationen för visningsbredd för heltalsdatatyper (TINYINT, SMALLINT, MEDIUMINT, INT, BIGINT) har tagits bort i MySQL 8.0.17. Programsatser som innehåller datatypsdefinitioner i utdata visar inte längre visningsbredden för heltalstyper, förutom TINYINT(1). MySQL-kopplingar förutsätter att TINYINT(1)-kolumner har sitt ursprung som BOOLEAN-kolumner. Med det här undantaget kan de fortsätta att göra det antagandet.

Exempel

Beskriv admin_user vid mysql 8.19

Fält
Typ
Null
Nyckel
Standard
Extra
user_id
int unsigned
NEJ
PRI
NULL
auto_increment
firstname
varchar(32)
JA
NULL
lastname
varchar(32)
JA
NULL
email
varchar(128)
JA
NULL
username
varchar(40)
JA
UNI
NULL
password
varchar(255)
NEJ
NULL
created
timestamp
NEJ
CURRENT_TIMESTAMP
DEFAULT_GENERATED
modified
timestamp
NEJ
CURRENT_TIMESTAMP
DEFAULT_GENERATED vid uppdatering CURRENT_TIMESTAMP
logdate
timestamp
JA
NULL
lognum
smallint unsigned
NEJ
0

Förutom för TINYINT(1), ska all heltalsutfyllnad (TINYINT > 1, SMALLINT, MEDIUMINT, INT, BIGINT) tas bort från db_schema.xml -fil.

Mer information finns i https://dev.mysql.com/doc/relnotes/mysql/8.0/en/news-8-0-19.html#mysqld-8-0-19-feature.

Standardbeteendet ORDER BY

Före 8.0 sorterades posterna efter sekundärnyckeln. Standardsorteringsordningen beror på vilken motor som används.
Ange alltid en sorteringsordning om koden är beroende av en viss sortering.

ASC- och DESC-kvalificerare för GROUP BY har tagits bort

Från och med MySQL 8.0.13 är den borttagna ASC eller DESC kvalificerare för GROUP BY -satser har tagits bort. Frågor som tidigare förlitats på GROUP BY sortering kan ge resultat som skiljer sig från tidigare MySQL-versioner. Om du vill skapa en viss sorteringsordning anger du en ORDER BY -sats.

Commerce och MySQL 8

Vissa förändringar i Adobe Commerce har gjorts för att stödja MySQL 8.

Fråge- och infogningsbeteende

Adobe Commerce inaktiverade det reguljära valideringsbeteendet genom att ställa in SET SQL_MODE='' i /lib/internal/Magento/Framework/DB/Adapter/Pdo/Mysql.php:424.. Om valideringen är inaktiverad är det möjligt att MySQL trunkerar data. I MySQL har frågebeteendet ändrats: Select * on my_table where IP='127.0.0.1' returnerar inte längre resultat eftersom IP-adressen nu visas korrekt som en sträng i stället för som ett heltal.

Uppgraderar från MySQL 5.7 till MySQL 8

Om du vill uppdatera MySQL korrekt från version 5.7 till version 8 måste du följa dessa steg för att:

  1. Uppgradera Adobe Commerce till 2.4.0. Testa allt och kontrollera att systemet fungerar som det ska.

  2. Aktivera underhållsläge:

    code language-bash
    bin/magento maintenance:enable
    
  3. Säkerhetskopiera databasen:

    code language-bash
    bin/magento setup:backup --db
    
  4. Uppdatera MySQL till version 8.

  5. Importera säkerhetskopierade data till MySQL.

  6. Rensa cachen:

    code language-bash
    bin/magento cache:clean
    
  7. Inaktivera underhållsläge:

    code language-bash
    bin/magento maintenance:disable
    

Konfigurera databasinstansen

I det här avsnittet beskrivs hur du skapar en databasinstans för Adobe Commerce. Även om en ny databasinstans rekommenderas kan du installera Adobe Commerce med en befintlig databasinstans.

Så här konfigurerar du en MySQL-databasinstans:

  1. Logga in på databasservern som vilken användare som helst.

  2. Gå till en MySQL-kommandotolk:

    code language-bash
    mysql -u root -p
    
  3. Ange MySQL root användarens lösenord när du uppmanas till det.

  4. Ange följande kommandon i den ordning som visas för att skapa en databasinstans med namnet magento med användarnamn magento:

    code language-sql
    create database magento;
    
    code language-sql
    create user 'magento'@'localhost' IDENTIFIED BY 'magento';
    
    code language-sql
    GRANT ALL ON magento.* TO 'magento'@'localhost';
    
    code language-sql
    flush privileges;
    
  5. Retur exit för att avsluta kommandotolken.

  6. Verifiera databasen:

    code language-bash
    mysql -u magento -p
    

    Om MySQL-övervakaren visas har du skapat databasen på rätt sätt. Om ett fel visas upprepar du de föregående kommandona.

  7. Om webbservern och databasservern finns på olika värdar kan du utföra de uppgifter som beskrivs i det här avsnittet på databasservervärden och sedan se Konfigurera en MySQL-fjärrdatabasanslutning.

    Vi rekommenderar att du konfigurerar din databasinstans så att den passar ditt företag. Tänk på följande när du konfigurerar databasen:

    • Indexerare kräver högre tmp_table_size och max_heap_table_size värden (till exempel 64 M). Om du konfigurerar batch_size -parametern kan du justera det värdet tillsammans med tabellstorleksinställningarna för att förbättra indexeringsprestanda. Se Optimeringsguide för mer information.

    • Kontrollera att alla indextabeller för MySQL och Adobe Commerce kan sparas i minnet (till exempel konfigurera innodb_buffer_pool_size).

    • Omindexering av MariaDB 10.4 tar längre tid jämfört med andra versioner av MariaDB eller MySQL. Se Bästa praxis för konfiguration.

  8. För MySQL TIMESTAMP fält för att följa de inställningar och den komposition som förväntas av programmets deklarativa schemaarkitektur, systemvariabeln explicit_defaults_for_timestamp måste anges till on.

    Referenser:

    Om inställningen inte är aktiverad bin/magento setup:db:status rapporterar alltid att Declarative Schema is not up to date.

NOTE
The explicit_defaults_for_timestamp inställningen är inaktuell. Den här inställningen kontrollerar inaktuella TIMESTAMP-beteenden som kommer att tas bort i en framtida MySQL-version. När de beteendena tas bort visas explicit_defaults_for_timestamp -inställningen tas också bort.
WARNING
För Adobe Commerce i molninfrastrukturprojekt finns explicit_defaults_for_timestamp inställningen för MySQL (MariaDB) är som standard AV.

Omindexering av MariaDB 10.4 och 10.6 tar längre tid jämfört med tidigare versioner av MariaDB eller MySQL. För att påskynda omindexeringen rekommenderar vi att du ställer in följande konfigurationsparametrar för MariaDB:

Om prestandaförsämringar inte har att göra med indexering efter uppgradering till MariaDB 10.6 kan du aktivera --query-cache-type inställning. Till exempel: --query-cache-type=ON.

Innan du uppgraderar Adobe Commerce i molninfrastrukturprojekt kan du behöva uppgradera MariaDB (se MariaDB upgrade best practices).

Exempel:

  • Adobe Commerce 2.4.6 med MariaDB version 10.5.1 eller senare
  • Adobe Commerce 2.3.5 med MariaDB version 10.3 eller tidigare

Utöver dessa rekommendationer bör du rådfråga databasadministratören om hur du konfigurerar följande parametrar:

NOTE
De här inställningarna är endast tillgängliga för lokala distributioner. Adobe Commerce på molninfrastrukturkunder har inte tillgång till dessa inställningar.
recommendation-more-help
0f8e7db5-0e9c-4002-a5b8-a0088077d995