Directives générales pour MySQL

Voir Configuration requise pour les versions prises en charge de MySQL.

Adobe fortement recommande de respecter les normes suivantes lors de la configuration de votre base de données :

  • Adobe Commerce utilise Déclencheurs de base de données MySQL pour améliorer l'accès à la base de données lors de la réindexation. Ils sont créés lorsque le mode indexeur est défini sur planning. L’application ne prend en charge aucun déclencheur personnalisé dans la base de données, car les déclencheurs personnalisés peuvent introduire des incompatibilités avec les versions futures d’Adobe Commerce.
  • Se familiariser avec ces limites potentielles de déclenchement MySQL ; avant de continuer.
  • Pour améliorer la sécurité de votre base de données, activez l’option STRICT_ALL_TABLES le mode SQL pour empêcher le stockage de valeurs de données non valides, ce qui peut entraîner des interactions de base de données indésirables.
  • Adobe Commerce not prennent en charge la réplication basée sur des instructions MySQL. Assurez-vous que vous utilisez only réplication basée sur les lignes.
WARNING
Adobe Commerce utilise actuellement CREATE TEMPORARY TABLE des instructions au sein des transactions, qui sont incompatible avec les mises en oeuvre de base de données, utilisez la réplication basée sur GTID, telle que Instances de deuxième génération Google Cloud SQL. Considérez MySQL pour Cloud SQL 8.0 comme une alternative.
NOTE
Si votre serveur web et votre serveur de base de données se trouvent sur des hôtes différents, effectuez les tâches décrites dans cette rubrique sur l’hôte du serveur de base de données, puis reportez-vous à la section Configuration d’une connexion de base de données MySQL distante.

Installation de MySQL sur Ubuntu

Adobe Commerce 2.4 nécessite une installation propre de MySQL 8.0. Suivez les liens ci-dessous pour obtenir des instructions sur l’installation de MySQL sur votre machine.

Si vous prévoyez d’importer un grand nombre de produits, vous pouvez augmenter la valeur de max_allowed_packet qui est supérieur à la valeur par défaut, 16 Mo.

NOTE
La valeur par défaut s’applique à Adobe Commerce sur l’infrastructure cloud. et des projets sur site. Les clients d’Adobe Commerce sur l’infrastructure cloud Pro doivent ouvrir un ticket d’assistance pour augmenter le max_allowed_packet . Les clients Adobe Commerce on Cloud Infrastructure Starter peuvent augmenter la valeur en mettant à jour la configuration dans la variable /etc/mysql/mysql.cnf fichier .

Pour augmenter la valeur, ouvrez la variable /etc/mysql/mysql.cnf dans un éditeur de texte et recherchez la valeur de max_allowed_packet. Enregistrez vos modifications dans le mysql.cnf fermez l’éditeur de texte, puis redémarrez MySQL (service mysql restart).

Pour vérifier éventuellement la valeur que vous définissez, saisissez la commande suivante à l’adresse mysql> invite :

SHOW VARIABLES LIKE 'max_allowed_packet';

Alors, Configuration de l’instance de base de données.

Modifications de MySQL 8

Pour Adobe Commerce 2.4, nous avons ajouté la prise en charge de MySQL 8.
Cette section décrit les modifications majeures de MySQL 8 que les développeurs doivent connaître.

Largeur supprimée pour les types entiers (remplissage)

La spécification de largeur d’affichage pour les types de données entiers (TINYINT, SMALLINT, MEDIUMINT, INT, BIGINT) a été abandonnée dans MySQL 8.0.17. Les instructions qui incluent des définitions de type de données dans leur sortie n’affichent plus la largeur d’affichage des types entiers, à l’exception de TINYINT(1). Les connecteurs MySQL supposent que les colonnes TINYINT(1) sont issues de colonnes BOOLÉENNES. Cette exception leur permet de continuer à faire cette hypothèse.

Exemple

Description de admin_user sur mysql 8.19

Champ
Type
Null
Clé
Par défaut
Plus
user_id
int unsigned
NON
PRI
NULL
auto_increment
firstname
varchar(32)
OUI
NULL
lastname
varchar(32)
OUI
NULL
email
varchar(128)
OUI
NULL
username
varchar(40)
OUI
UNI
NULL
password
varchar(255)
NON
NULL
created
timestamp
NON
CURRENT_TIMESTAMP
DEFAULT_GENERATED
modified
timestamp
NON
CURRENT_TIMESTAMP
DEFAULT_GENERATED à mettre à jour CURRENT_TIMESTAMP
logdate
timestamp
OUI
NULL
lognum
smallint unsigned
NON
0

Sauf que TINYINT(1), la marge intérieure des entiers (TINYINT > 1, SMALLINT, MEDIUMINT, INT, BIGINT) doit être supprimée de la variable db_schema.xml fichier .

Pour plus d’informations, voir https://dev.mysql.com/doc/relnotes/mysql/8.0/en/news-8-0-19.html#mysqld-8-0-19-feature.

Comportement PAR COMMANDE PAR défaut

Avant la version 8.0, les entrées étaient triées par clé étrangère. L’ordre de tri par défaut dépend du moteur utilisé.
Spécifiez toujours un ordre de tri si votre code dépend d’un tri spécifique.

Qualificateurs ASC et DESC obsolètes pour GROUP BY

À compter de MySQL 8.0.13, le ASC ou DESC qualificateurs pour GROUP BY des clauses ont été supprimées. Requêtes qui reposaient auparavant sur GROUP BY le tri peut produire des résultats différents des versions précédentes de MySQL. Pour générer un ordre de tri donné, indiquez un ORDER BY clause .

Commerce et MySQL 8

Certaines modifications ont été apportées à Adobe Commerce pour prendre correctement en charge MySQL 8.

Comportement de requête et d’insertion

Adobe Commerce a désactivé le comportement de validation normal en définissant SET SQL_MODE='' dans /lib/internal/Magento/Framework/DB/Adapter/Pdo/Mysql.php:424.. Lorsque la validation est désactivée, il est possible que MySQL tronque les données. Dans MySQL, le comportement de la requête a changé : Select * on my_table where IP='127.0.0.1' ne renvoie plus de résultats, car l’adresse IP est désormais correctement considérée comme une chaîne, plutôt que comme un entier.

Mise à niveau de MySQL 5.7 vers MySQL 8

Pour mettre correctement à jour MySQL de la version 5.7 à la version 8, procédez comme suit dans l’ordre :

  1. Mettez à niveau Adobe Commerce vers la version 2.4.0. Testez tout et assurez-vous que votre système fonctionne comme prévu.

  2. Activer le mode de maintenance :

    code language-bash
    bin/magento maintenance:enable
    
  3. Sauvegarder une base de données :

    code language-bash
    bin/magento setup:backup --db
    
  4. Mettez à jour MySQL vers la version 8.

  5. Importez les données sauvegardées dans MySQL.

  6. Nettoyez le cache :

    code language-bash
    bin/magento cache:clean
    
  7. Désactiver le mode de maintenance :

    code language-bash
    bin/magento maintenance:disable
    

Configuration de l'instance de base de données

Cette section explique comment créer une instance de base de données pour Adobe Commerce. Bien qu’une nouvelle instance de base de données soit recommandée, vous pouvez éventuellement installer Adobe Commerce avec une instance de base de données existante.

Pour configurer une instance de base de données MySQL :

  1. Connectez-vous à votre serveur de base de données comme n’importe quel utilisateur.

  2. Accédez à une invite de commande MySQL :

    code language-bash
    mysql -u root -p
    
  3. Saisissez le MySQL. root mot de passe de l’utilisateur lorsqu’il y est invité.

  4. Saisissez les commandes suivantes dans l’ordre indiqué pour créer une instance de base de données nommée magento avec nom d’utilisateur magento:

    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;
    
  5. Entrée exit pour quitter l’invite de commande.

  6. Vérification de la base de données :

    code language-bash
    mysql -u magento -p
    

    Si le moniteur MySQL s’affiche, vous avez correctement créé la base de données. Si une erreur s’affiche, répétez les commandes précédentes.

  7. Si votre serveur web et votre serveur de base de données se trouvent sur des hôtes différents, effectuez les tâches décrites dans cette rubrique sur l’hôte du serveur de base de données, puis reportez-vous à la section Configuration d’une connexion de base de données MySQL distante.

    Nous vous recommandons de configurer votre instance de base de données en fonction de vos besoins. Lors de la configuration de votre base de données, veuillez tenir compte des points suivants :

    • Les indexeurs nécessitent des valeurs plus élevées tmp_table_size et max_heap_table_size (par exemple, 64 M). Si vous configurez la variable batch_size , vous pouvez ajuster cette valeur avec les paramètres de taille de tableau pour améliorer les performances de l’indexeur. Voir Guide d’optimisation pour plus d’informations.

    • Pour des performances optimales, assurez-vous que toutes les tables d’index MySQL et Adobe Commerce peuvent être conservées en mémoire (par exemple, configurez la fonction innodb_buffer_pool_size).

    • La réindexation sur MariaDB 10.4 prend plus de temps que les autres versions de MariaDB ou de MySQL. Voir Bonnes pratiques de configuration.

  8. Pour MySQL TIMESTAMP les champs qui suivent les préférences et la composition attendues par l’architecture du schéma déclaratif de l’application, la variable système ; explicit_defaults_for_timestamp doit être défini sur on.

    Références :

    Si ce paramètre n’est pas activé, bin/magento setup:db:status indique toujours que la variable Declarative Schema is not up to date.

NOTE
La variable explicit_defaults_for_timestamp est obsolète. Ce paramètre contrôle les comportements TIMESTAMP obsolètes qui seront supprimés dans une prochaine version de MySQL. Lorsque ces comportements sont supprimés, la variable explicit_defaults_for_timestamp est également supprimé.
WARNING
Pour Adobe Commerce sur les projets d’infrastructure cloud, la variable explicit_defaults_for_timestamp pour MySQL (MariaDB), le paramètre par défaut est OFF.

La réindexation sur MariaDB 10.4 et 10.6 prend plus de temps que les versions précédentes de MariaDB ou de MySQL. Pour accélérer la réindexation, nous vous recommandons de définir les paramètres de configuration MariaDB suivants :

Si vous constatez une dégradation des performances non liée à l’indexation après la mise à niveau vers MariaDB 10.6, envisagez d’activer la variable --query-cache-type . Par exemple : --query-cache-type=ON.

Avant de mettre à niveau Adobe Commerce sur des projets d’infrastructure cloud, vous devrez peut-être également mettre à niveau MariaDB (voir Bonnes pratiques de mise à niveau de MariaDB).

Par exemple :

  • Adobe Commerce 2.4.6 avec MariaDB version 10.5.1 ou ultérieure
  • Adobe Commerce 2.3.5 avec MariaDB version 10.3 ou antérieure

Outre ces recommandations, consultez l’administrateur de la base de données pour configurer les paramètres suivants :

NOTE
Ces paramètres sont disponibles uniquement pour les déploiements sur site. Les clients d’Adobe Commerce sur l’infrastructure cloud n’ont pas accès à ces paramètres.
recommendation-more-help
0f8e7db5-0e9c-4002-a5b8-a0088077d995