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 förväntar dig 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 värdet max_allowed_packet. Adobe Commerce på molninfrastruktur Starter-kunder kan öka värdet genom att uppdatera konfigurationen i filen /etc/mysql/mysql.cnf.

Om du vill öka värdet öppnar du filen /etc/mysql/mysql.cnf i en textredigerare och letar upp värdet för max_allowed_packet. Spara ändringarna i filen 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 vid en mysql>-prompt:

SHOW VARIABLES LIKE 'max_allowed_packet';

Konfigurera sedan 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ältTypNullNyckelStandardExtra
user_idint unsignedNEJPRINULLauto_increment
firstnamevarchar(32)JANULL
lastnamevarchar(32)JANULL
emailvarchar(128)JANULL
usernamevarchar(40)JAUNINULL
passwordvarchar(255)NEJNULL
createdtimestampNEJCURRENT_TIMESTAMPDEFAULT_GENERATED
modifiedtimestampNEJCURRENT_TIMESTAMPDEFAULT_GENERATED vid uppdatering CURRENT_TIMESTAMP
logdatetimestampJANULL
lognumsmallint unsignedNEJ0

Med undantag för TINYINT(1) ska all heltalsutfyllnad (TINYINT > 1, SMALLINT, MEDIUMINT, INT, BIGINT) tas bort från filen db_schema.xml.

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 har de inaktuella ASC- eller DESC-kvalificerarna för GROUP BY-satser tagits bort. Frågor som tidigare förlitat sig på GROUP BY-sortering kan ge resultat som skiljer sig från tidigare MySQL-versioner. Om du vill skapa en given 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:

    bin/magento maintenance:enable
    
  3. Säkerhetskopiera databasen:

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

  5. Importera säkerhetskopierade data till MySQL.

  6. Rensa cachen:

    bin/magento cache:clean
    
  7. Inaktivera underhållsläge:

    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:

    mysql -u root -p
    
  3. Ange användarens lösenord för MySQL root 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ändarnamnet magento:

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

  6. Verifiera databasen:

    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. Mer information finns i 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 MB). Om du konfigurerar parametern batch_size kan du justera det värdet tillsammans med tabellstorleksinställningarna för att förbättra indexerarens prestanda. Mer information finns i Optimeringsguiden.

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

    • 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 att MySQL TIMESTAMP-fält ska följa de inställningar och den komposition som förväntas av programmets deklarativa schemaarkitektur måste systemvariabeln explicit_defaults_for_timestamp anges till on.

    Referenser:

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

NOTE
Inställningen explicit_defaults_for_timestamp är inaktuell. Den här inställningen kontrollerar inaktuella TIMESTAMP-beteenden som kommer att tas bort i en framtida MySQL-version. När dessa beteenden tas bort tas även inställningen explicit_defaults_for_timestamp bort.
WARNING
För Adobe Commerce i molninfrastrukturprojekt är explicit_defaults_for_timestamp-inställningen för MySQL (MariaDB) som standard OFF.

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 bör du aktivera inställningen --query-cache-type. 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.
Nästa sidaFjärranslutningar

Commerce