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.
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ä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 |
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:
-
Uppgradera Adobe Commerce till 2.4.0.
Testa allt och kontrollera att systemet fungerar som det ska. -
Aktivera underhållsläge:
bin/magento maintenance:enable
-
Säkerhetskopiera databasen:
bin/magento setup:backup --db
-
Uppdatera MySQL till version 8.
-
Importera säkerhetskopierade data till MySQL.
-
Rensa cachen:
bin/magento cache:clean
-
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:
-
Logga in på databasservern som vilken användare som helst.
-
Gå till en MySQL-kommandotolk:
mysql -u root -p
-
Ange användarens lösenord för MySQL
root
när du uppmanas till det. -
Ange följande kommandon i den ordning som visas för att skapa en databasinstans med namnet
magento
med användarnamnetmagento
:create database magento;
create user 'magento'@'localhost' IDENTIFIED BY 'magento';
GRANT ALL ON magento.* TO 'magento'@'localhost';
flush privileges;
-
Ange
exit
för att avsluta kommandotolken. -
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.
-
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
- ochmax_heap_table_size
-värden (till exempel 64 MB). Om du konfigurerar parameternbatch_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.
-
-
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 systemvariabelnexplicit_defaults_for_timestamp
anges tillon
.Referenser:
Om den här inställningen inte är aktiverad rapporterar
bin/magento setup:db:status
alltid attDeclarative Schema is not up to date
.
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.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: