Configuration du service MySQL
Le service mysql fournit un stockage de données persistant basé sur les versions 10.2 à 10.4 de MariaDB, prenant en charge le moteur de stockage XtraDB et les fonctionnalités réimplémentées de MySQL 5.6 et 5.7.
La réindexation sur MariaDB 10.4 prend plus de temps que les autres versions de MariaDB ou MySQL. Voir Indexeurs dans le guide Bonnes pratiques de performance.
Utilisez les instructions suivantes pour la configuration du service sur les environnements Pro Integration et les environnements de démarrage, y compris la branche master.
Pour activer MySQL :
-
Ajoutez le nom, le type et la valeur de disque requis (en Mo) au fichier
.magento/services.yaml.code language-yaml mysql: type: mysql:<version> disk: 5120note tip TIP Les erreurs MySQL, telles que PDO Exception: MySQL server has gone away, peuvent se produire en raison d’un espace disque insuffisant. Vérifiez que vous avez alloué suffisamment d’espace disque au service dans le fichier.magento/services.yaml. -
Configurez les relations dans le fichier
.magento.app.yaml.code language-yaml relationships: database: "mysql:mysql" -
Ajouter, valider et transmettre vos modifications de code.
code language-bash git add .magento/services.yaml .magento.app.yaml && git commit -m "Enable mysql service" && git push origin <branch-name>
services.yaml et .magento.app.yaml. Consultez Modifier la version du service pour obtenir des conseils sur la mise à niveau ou la rétrogradation d’un service.Configurer la base de données MySQL
Les options suivantes s’offrent à vous lors de la configuration de la base de données MySQL :
schemas: un schéma définit une base de données. Le schéma par défaut est la base de donnéesmain.endpoints: chaque point d’entrée représente des informations d’identification avec des privilèges spécifiques. Le point d’entrée par défaut estmysql, qui a un accèsadminà la base de donnéesmain.properties: les propriétés sont utilisées pour définir des configurations de base de données supplémentaires.
Voici un exemple de configuration de base dans le fichier .magento/services.yaml :
mysql:
type: mysql:10.4
disk: 5120
configuration:
properties:
optimizer_switch: "rowid_filter=off"
optimizer_use_condition_selectivity: 1
L’properties dans l’exemple ci-dessus modifie les paramètres de optimizer par défaut comme recommandé dans le guide des bonnes pratiques de performance.
Options de configuration de MariaDB :
default_charsetdefault_collationmax_allowed_packet1 à 100.optimizer_switchoptimizer_use_condition_selectivityConfigurer plusieurs utilisateurs de base de données
Vous pouvez éventuellement configurer plusieurs utilisateurs avec des autorisations différentes pour accéder à la base de données main.
Par défaut, un point d’entrée nommé mysql dispose d’un accès administrateur à la base de données. Pour configurer plusieurs utilisateurs de la base de données, vous devez définir plusieurs points d’entrée dans le fichier services.yaml et déclarer les relations dans le fichier .magento.app.yaml. Pour les environnements d’évaluation et de production Pro, Envoyez un ticket d’assistance Adobe Commerce pour demander l’utilisateur supplémentaire.
Utilisez un tableau imbriqué pour définir les points d’entrée pour un accès utilisateur spécifique. Chaque point d’entrée peut désigner l’accès à un ou plusieurs schémas (bases de données) et différents niveaux d’autorisation sur chacun d’eux.
Les niveaux d’autorisation valides sont les suivants :
ro: seules les requêtes SELECT sont autorisées.rw: les requêtes SELECT et les requêtes INSERT, UPDATE et DELETE sont autorisées.admin: toutes les requêtes sont autorisées, y compris les requêtes DDL (CREATE TABLE, DROP TABLE, etc.).
Par exemple :
mysql:
type: mysql:10.4
disk: 5120
configuration:
schemas:
- main
endpoints:
admin:
default_schema: main
privileges:
main: admin
reporter:
privileges:
main: ro
importer:
privileges:
main: rw
properties:
optimizer_switch: "rowid_filter=off"
optimizer_use_condition_selectivity: 1
Dans l’exemple précédent, le point d’entrée admin fournit un accès de niveau administrateur à la base de données main, le point d’entrée reporter fournit un accès en lecture seule et le point d’entrée importer un accès en lecture/écriture, ce qui signifie :
- L’utilisateur
admincontrôle entièrement la base de données. - L’utilisateur
reporterdispose uniquement des privilèges SELECT. - L’utilisateur
importerdispose des privilèges SELECT, INSERT, UPDATE et DELETE.
Ajoutez les points d’entrée définis dans l’exemple ci-dessus à la propriété relationships du fichier .magento.app.yaml. Par exemple :
relationships:
database: "mysql:admin"
databasereporter: "mysql:reporter"
databaseimporter: "mysql:importer"
DEFINER pour les procédures stockées et les vues.Connexion à la base de données
Pour accéder directement à la base de données MariaDB, vous devez utiliser un SSH pour vous connecter à l’environnement cloud distant et vous connecter à la base de données.
-
Utilisez SSH pour vous connecter à l’environnement distant.
code language-bash magento-cloud ssh -
Récupérez les informations d’identification de connexion MySQL à partir des propriétés
databaseettypede la variable $MAGENTO_CLOUD_RELATIONSHIPS.code language-bash echo $MAGENTO_CLOUD_RELATIONSHIPS | base64 -d | json_ppou
code language-bash php -r 'print_r(json_decode(base64_decode($_ENV["MAGENTO_CLOUD_RELATIONSHIPS"])));'Dans la réponse, recherchez les informations MySQL. Par exemple :
code language-json "database" : [ { "password" : "", "rel" : "mysql", "hostname" : "nnnnnnnn.mysql.service._.magentosite.cloud", "service" : "mysql", "host" : "database.internal", "ip" : "###.###.###.###", "port" : 3306, "path" : "main", "cluster" : "projectid-integration-id", "query" : { "is_master" : true }, "type" : "mysql:10.3", "username" : "user", "scheme" : "mysql" } ], -
Connexion à la base de données.
-
Pour Commencer, utilisez la commande suivante :
code language-bash mysql -h database.internal -u <username> -
Pour Pro, utilisez la commande suivante avec le nom d'hôte, le numéro de port, le nom d'utilisateur et le mot de passe récupérés de la variable
$MAGENTO_CLOUD_RELATIONSHIPS.code language-bash mysql -h <hostname> -P <number> -u <username> -p'<password>'
-
magento-cloud db:sql pour vous connecter à la base distante et exécuter des commandes SQL.Connexion à la base de données secondaire
Parfois, vous devez vous connecter à la base de données secondaire pour améliorer les performances de la base de données ou résoudre les problèmes de verrouillage de la base de données. Si cette configuration est requise, utilisez "port" : 3304 pour établir la connexion. Voir la rubrique Bonnes pratiques pour configurer la connexion esclave MySQL dans le guide Bonnes pratiques d’implémentation.
Dépannage
Consultez les articles d’assistance Adobe Commerce suivants pour obtenir de l’aide sur la résolution des problèmes MySQL :