Allmänna riktlinjer för MySQL
Mer information om vilka versioner av MySQL som stöds finns i Systemkrav.
Adobe rekommenderar starkt 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 under omindexering. Dessa skapas när indexeringsläget är inställt på schedule. 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 begränsningar för MySQL-utlösare innan du fortsätter.
- Aktivera SQL-läget
STRICT_ALL_TABLES
om du vill förbättra databasens säkerhetsposition och förhindra att ogiltiga datavärden lagras, vilket kan orsaka oönskade databasinteraktioner. - Adobe Commerce har inte stöd för MySQL-satsbaserad replikering. Se till att du använder endast radbaserad replikering.
CREATE TEMPORARY TABLE
-satser inuti transaktioner, som är inkompatibla med databasimplementeringar använder GTID-baserad replikering, till exempel Google Cloud SQL-instanser av andra generationen. Överväg MySQL för Cloud SQL 8.0 som ett alternativ.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
int unsigned
NULL
auto_increment
firstname
varchar(32)
NULL
lastname
varchar(32
)NULL
email
varchar(128)
NULL
username
varchar(40)
NULL
password
varchar(255)
NULL
created
timestamp
CURRENT_TIMESTAMP
DEFAULT_GENERATED
modified
timestamp
CURRENT_TIMESTAMP
DEFAULT_GENERATED
vid uppdatering CURRENT_TIMESTAMP
logdate
timestamp
NULL
lognum
smallint unsigned
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:
code language-bash bin/magento maintenance:enable
-
Säkerhetskopiera databasen:
code language-bash bin/magento setup:backup --db
-
Uppdatera MySQL till version 8.
-
Importera säkerhetskopierade data till MySQL.
-
Rensa cachen:
code language-bash bin/magento cache:clean
-
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:
-
Logga in på databasservern som vilken användare som helst.
-
Gå till en MySQL-kommandotolk:
code language-bash 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
: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;
-
Ange
exit
för att avsluta kommandotolken. -
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.
-
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: