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 gegevensbestandtrekkersom gegevensbestandtoegang tijdens het opnieuw indexeren te verbeteren. Deze worden gecreeerd wanneer de indexeerwijze aan programmawordt 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 trekkerbeperkingenalvorens 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 replicatiegebruikt.
CREATE TEMPORARY TABLE
verklaringen binnen transacties, die onverenigbaarmet 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 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
bij bijwerken CURRENT_TIMESTAMP
logdate
timestamp
NULL
lognum
smallint unsigned
0
Behalve 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
root
in wanneer hierom wordt gevraagd. -
Voer de volgende opdrachten in de volgorde in die wordt weergegeven om een database-instantie met de naam
magento
met gebruikersnaammagento
te 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
exit
in om de bevelherinnering weg te gaan. -
De database controleren:
code language-bash mysql -u magento -p
Als 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_size
enmax_heap_table_size
(bijvoorbeeld 64 M). Als u de parameterbatch_size
configureert, kunt u die waarde samen met de instellingen voor de tabelgrootte aanpassen om de indexeerprestaties te verbeteren. Verwijs naar de Gids van de Optimaliseringvoor 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_size
configureren). -
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_timestamp
worden ingesteld opon
.Referenties:
Als deze instelling niet is ingeschakeld, rapporteert
bin/magento setup:db:status
altijd 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 praktijkenbevorderen).
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: