Algemene MySQL-richtlijnen
Zie {de Vereisten van het 0} Systeem voor gesteunde versies van MySQL.
Adobe adviseert sterk u de volgende norm waarneemt wanneer u opstelling uw gegevensbestand:
- Adobe Commerce gebruikt MySQL gegevensbestandtrekkers om gegevensbestandtoegang tijdens het opnieuw indexeren te verbeteren. Deze worden gecreeerd wanneer de indexeerwijze aan programma wordt geplaatst. De toepassing ondersteunt geen aangepaste triggers in de database omdat aangepaste triggers incompatibiliteiten met toekomstige Adobe Commerce-versies kunnen introduceren.
- Verken zich met deze potentiële MySQL trekkerbeperkingen alvorens u verdergaat.
- Om uw houding van de gegevensbestandveiligheid te verbeteren, laat
STRICT_ALL_TABLES SQL wijze toe om het opslaan van ongeldige gegevenswaarden te verhinderen, die ongewenste gegevensbestandinteractie zou kunnen veroorzaken. - Adobe Commerce steunt __ geen op verklaring-gebaseerde replicatie MySQL. Zorg ervoor u slechts op rij-gebaseerde replicatie gebruikt.
CREATE TEMPORARY TABLE verklaringen binnen transacties, die onverenigbaar met gegevensbestandimplementaties zijn gebruiken GTID-Gebaseerde replicatie, zoals SQL van de Wolk van Google tweede generatie instanties . Bekijk MySQL voor Cloud SQL 8.0 als alternatief.MySQL installeren op Ubuntu
Adobe Commerce 2.4 vereist een schone installatie van MySQL 8.0. Volg de onderstaande koppelingen voor instructies over het installeren van MySQL op uw computer.
Als u verwacht om grote aantallen producten in te voeren, kunt u de waarde voor max_allowed_packet verhogen die groter is dan het gebrek, 16 MB.
max_allowed_packet -waarde te verhogen. Adobe Commerce on cloud Infrastructure Starter-klanten kunnen de waarde verhogen door de configuratie in het /etc/mysql/mysql.cnf -bestand bij te werken.Als u de waarde wilt verhogen, opent u het /etc/mysql/mysql.cnf -bestand in een teksteditor en zoekt u de waarde voor max_allowed_packet . Sla de wijzigingen in het mysql.cnf -bestand op, sluit de teksteditor en start MySQL opnieuw ( service mysql restart ).
Als u optioneel de waarde wilt verifiëren die u instelt, voert u de volgende opdracht in bij een mysql> -prompt:
SHOW VARIABLES LIKE 'max_allowed_packet';
Dan, vorm de gegevensbestandinstantie .
Wijzigingen in MySQL 8
Voor Adobe Commerce 2.4 hebben we ondersteuning toegevoegd voor MySQL 8.
Deze sectie beschrijft belangrijke veranderingen in MySQL 8 die de ontwikkelaars zich van bewust zouden moeten zijn.
Verwijderde breedte voor typen gehele getallen (opvulling)
De specificatie van de vertoningsbreedte voor geheelgegevenstypes (TINYINT, SMALLINT, MEDIUMINT, INT, BIGINT) is verouderd in MySQL 8.0.17. Instructies die definities van gegevenstypen in de uitvoer bevatten, geven niet langer de weergavebreedte voor typen gehele getallen weer, behalve voor TINYINT(1). MySQL-connectors gaan ervan uit dat TINYINT(1)-kolommen als BOOLEAN-kolommen zijn ontstaan. Deze uitzondering stelt hen in staat om die veronderstelling te blijven maken.
Voorbeeld
Beschrijf admin_user op mysql 8.19
int unsignedNULLauto_incrementfirstnamevarchar(32)NULLlastnamevarchar(32)NULLemailvarchar(128)NULLusernamevarchar(40)NULLpasswordvarchar(255)NULLcreatedtimestampCURRENT_TIMESTAMPDEFAULT_GENERATEDmodifiedtimestampCURRENT_TIMESTAMPDEFAULT_GENERATED bij bijwerken CURRENT_TIMESTAMPlogdatetimestampNULLlognumsmallint unsigned0Behalve TINYINT (1), zou al geheel het opvullen (TINYINT > 1, SMALLINT, MEDIUMINT, INT, BIGINT) uit het db_schema.xml dossier moeten worden verwijderd.
Voor meer informatie, zie https://dev.mysql.com/doc/relnotes/mysql/8.0/en/news-8-0-19.html#mysqld-8-0-19-feature .
Standaardvolgorde OP, gedrag
Vóór 8.0 werden items gesorteerd op de buitenlandse sleutel. De standaardsorteervolgorde is afhankelijk van de gebruikte engine.
Geef altijd een sorteervolgorde op als de code afhankelijk is van een specifieke sortering.
Vervangen ASC- en DESC-kwalificatietoetsen voor GROUP BY
Vanaf MySQL 8.0.13 zijn de afgekeurde ASC - of DESC kwalificfiers for GROUP BY -componenten verwijderd. Zoekopdrachten die eerder op GROUP BY sorteren zijn gebaseerd, kunnen resultaten opleveren die afwijken van eerdere MySQL-versies. Geef een ORDER BY -component op om een bepaalde sorteervolgorde te maken.
Commerce en MySQL 8
Er zijn enkele wijzigingen aangebracht in Adobe Commerce om MySQL 8 correct te ondersteunen.
Werking query en invoegen
Adobe Commerce heeft het normale validatiegedrag uitgeschakeld door SET SQL_MODE='' in te stellen in /lib/internal/Magento/Framework/DB/Adapter/Pdo/Mysql.php:424. . Als validatie is uitgeschakeld, is het mogelijk dat MySQL gegevens afkapt. In MySQL is het gedrag Query gewijzigd: Select * on my_table where IP='127.0.0.1' retourneert niet langer de resultaten omdat het IP-adres nu correct als een tekenreeks wordt beschouwd in plaats van als een geheel getal.
Upgrade uitvoeren van MySQL 5.7 naar MySQL 8
Als u MySQL van versie 5.7 naar versie 8 correct wilt bijwerken, moet u de volgende stappen uitvoeren:
-
Upgrade Adobe Commerce naar 2.4.0.
Test alles en controleer of uw systeem werkt zoals u had verwacht. -
Onderhoudsmodus inschakelen:
code language-bash bin/magento maintenance:enable -
Maak een databaseback-up:
code language-bash bin/magento setup:backup --db -
Werk MySQL bij naar versie 8.
-
Importeer de back-upgegevens in MySQL.
-
De cache reinigen:
code language-bash bin/magento cache:clean -
Onderhoudsmodus uitschakelen:
code language-bash bin/magento maintenance:disable
De database-instantie configureren
In deze sectie wordt besproken hoe u een database-instantie voor Adobe Commerce kunt maken. Hoewel een nieuwe database-instantie wordt aanbevolen, kunt u desgewenst Adobe Commerce met een bestaande database-instantie installeren.
Om een MySQL gegevensbestandinstantie te vormen:
-
Meld u als elke gebruiker aan bij uw databaseserver.
-
Krijg aan een MySQL bevelherinnering:
code language-bash mysql -u root -p -
Voer het gebruikerswachtwoord van MySQL
rootin wanneer hierom wordt gevraagd. -
Voer de volgende opdrachten in de volgorde in die wordt weergegeven om een database-instantie met de naam
magentomet gebruikersnaammagentote maken: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; -
Ga
exitin om de bevelherinnering weg te gaan. -
De database controleren:
code language-bash mysql -u magento -pAls de MySQL monitorvertoningen, u het gegevensbestand behoorlijk creeerde. Als er een fout wordt weergegeven, herhaalt u de voorgaande opdrachten.
-
Als uw Webserver en gegevensbestandserver op verschillende gastheren zijn, voer de taken uit die in dit onderwerp op de gastheer van de gegevensbestandserver dan worden besproken Opstelling een verre MySQL gegevensbestandverbinding .
Wij adviseren u uw gegevensbestandinstantie zoals aangewezen voor uw zaken vormt. Houd rekening met het volgende wanneer u uw database configureert:
-
Indexeerders vereisen hogere waarden
tmp_table_sizeenmax_heap_table_size(bijvoorbeeld 64 M). Als u de parameterbatch_sizeconfigureert, kunt u die waarde samen met de instellingen voor de tabelgrootte aanpassen om de indexeerprestaties te verbeteren. Verwijs naar de Gids van de Optimalisering voor meer informatie. -
Voor optimale prestaties moet u ervoor zorgen dat alle MySQL- en Adobe Commerce-indextabellen in het geheugen kunnen worden opgeslagen (bijvoorbeeld
innodb_buffer_pool_sizeconfigureren). -
Het opnieuw indexeren op MariaDB 10.4 neemt meer tijd in vergelijking met andere versies MariaDB of MySQL. Zie beste praktijken van de Configuratie .
-
-
Als u wilt dat MySQL
TIMESTAMP-velden de voorkeuren en compositie volgen die worden verwacht door de declaratieve schemaarchitectuur van de toepassing, moet de systeemvariabeleexplicit_defaults_for_timestampworden ingesteld opon.Referenties:
Als deze instelling niet is ingeschakeld, rapporteert
bin/magento setup:db:statusaltijd dat deDeclarative Schema is not up to date.
explicit_defaults_for_timestamp is vervangen. Deze instelling bestuurt verouderde TIMESTAMP-gedragingen die in een toekomstige MySQL-release zullen worden verwijderd. Wanneer deze gedragingen worden verwijderd, wordt de instelling explicit_defaults_for_timestamp ook verwijderd.explicit_defaults_for_timestamp plaatsen voor MySQL (MariaDB) gebreken aan VAN.Het opnieuw indexeren op MariaDB 10.4 en 10.6 vergt meer tijd in vergelijking met vorige versies MariaDB of MySQL. Om het opnieuw indexeren te versnellen, adviseren wij plaatsend deze MariaDB configuratieparameters:
Als u prestatiesdegradatie niet verwant met indexatie na bevordering aan MariaDB 10.6 ervaart, denk na toelatend het --query-cache-type plaatsen. Bijvoorbeeld --query-cache-type=ON .
Alvorens Adobe Commerce op de projecten van de wolkeninfrastructuur te bevorderen, kunt u ook MariaDB moeten bevorderen ( zie MariaDB beste praktijken bevorderen).
Bijvoorbeeld:
- Adobe Commerce 2.4.6 met MariaDB versie 10.5.1 of hoger
- Adobe Commerce 2.3.5 met MariaDB versie 10.3 of lager
Naast deze aanbevelingen, zou u met uw gegevensbestandbeheerder over het vormen van de volgende parameters moeten raadplegen: