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 de MySQL. Voir Indexers dans le guide Bonnes pratiques de performances .
Suivez les instructions suivantes pour la configuration du service dans les environnements Pro Integration et les environnements Starter, 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 Des 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"
-
Ajoutez, validez et poussez 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
. Voir Modification de la version de service pour obtenir des conseils sur la mise à niveau ou la mise à niveau d’un service.Configuration de la base de données MySQL
Lors de la configuration de la base de données MySQL, vous disposez des options suivantes :
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 de terminaison représente des informations d’identification avec des privilèges spécifiques. Le point de terminaison par défaut estmysql
, qui aadmin
accès à 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
properties
dans l’exemple ci-dessus modifie les paramètres par défaut optimizer
comme recommandé dans le guide des bonnes pratiques de performances.
Options de configuration MariaDB :
default_charset
default_collation
max_allowed_packet
1
à 100
.optimizer_switch
optimizer_use_condition_selectivity
1
à 5
. Voir la documentation MariaDB.Configuration de plusieurs utilisateurs de la base de données
Vous pouvez éventuellement configurer plusieurs utilisateurs avec différentes autorisations pour accéder à la base de données main
.
Par défaut, un point d’entrée nommé mysql
a 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 de terminaison 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 de terminaison d’un accès utilisateur spécifique. Chaque point de terminaison peut désigner l’accès à un ou plusieurs schémas (bases de données) et différents niveaux d’autorisation pour 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
fournit 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 de privilèges SELECT . - L’utilisateur
importer
dispose des privilèges SELECT, INSERT, UPDATE et DELETE.
Ajoutez les points de terminaison 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 et vues stockées.Connexion à la base de données
Pour accéder directement à la base de données MariaDB, vous devez utiliser un SSH afin de 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 des propriétés
database
ettype
dans 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 Meilleures pratiques pour configurer la connexion esclave MySQL dans le guide Bonnes pratiques d’implémentation .
Dépannage
Pour obtenir de l’aide sur la résolution des problèmes MySQL, reportez-vous aux articles suivants du support Adobe Commerce :