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: 5120
note 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_charset
default_collation
max_allowed_packet
1
à 100
.optimizer_switch
optimizer_use_condition_selectivity
Configurer 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
admin
contrôle entièrement la base de données. - L’utilisateur
reporter
dispose uniquement des privilèges SELECT. - L’utilisateur
importer
dispose 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
database
ettype
de la variable $MAGENTO_CLOUD_RELATIONSHIPS.code language-bash echo $MAGENTO_CLOUD_RELATIONSHIPS | base64 -d | json_pp
ou
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 :