Configurar el servicio MySQL
El servicio mysql proporciona almacenamiento de datos persistente basado en MariaDB versiones 10.2 a 10.4, compatible con el motor de almacenamiento XtraDB y funciones reimplementadas de MySQL 5.6 y 5.7.
La reindexación en MariaDB 10.4 tarda más tiempo en comparación con otras versiones de MariaDB o MySQL. Consulte Indexadores en la guía de Prácticas recomendadas de rendimiento.
Siga estas instrucciones para la configuración del servicio en entornos de integración profesional y entornos de inicio, incluida la rama master.
Para habilitar MySQL:
-
Agregue el nombre, tipo y valor de disco necesarios (en MB) al archivo
.magento/services.yaml.code language-yaml mysql: type: mysql:<version> disk: 5120note tip TIP Los errores de MySQL, como PDO Exception: MySQL server has gone away, pueden producirse como resultado de la falta de espacio en disco. Compruebe que ha asignado suficiente espacio en disco al servicio en el archivo.magento/services.yaml. -
Configure las relaciones en el archivo
.magento.app.yaml.code language-yaml relationships: database: "mysql:mysql" -
Agregue, confirme e inserte los cambios de código.
code language-bash git add .magento/services.yaml .magento.app.yaml && git commit -m "Enable mysql service" && git push origin <branch-name>
services.yaml y .magento.app.yaml. Consulte Cambiar la versión del servicio para obtener instrucciones sobre cómo actualizar o degradar un servicio.Configurar la base de datos MySQL
Dispone de las siguientes opciones al configurar la base de datos MySQL:
schemas: un esquema define una base de datos. El esquema predeterminado es la base de datosmain.endpoints: cada extremo representa una credencial con privilegios específicos. El extremo predeterminado esmysql, que tiene acceso deadmina la base de datosmain.properties: las propiedades se utilizan para definir configuraciones de base de datos adicionales.
El siguiente es un ejemplo básico de configuración en el archivo .magento/services.yaml:
mysql:
type: mysql:10.4
disk: 5120
configuration:
properties:
optimizer_switch: "rowid_filter=off"
optimizer_use_condition_selectivity: 1
El properties del ejemplo anterior modifica la configuración predeterminada de optimizer como se recomienda en la guía de prácticas recomendadas de rendimiento🔗.
Opciones de configuración de MariaDB:
default_charsetdefault_collationmax_allowed_packet1 a 100.optimizer_switchoptimizer_use_condition_selectivity1 a 5. Ver documentación de MariaDB.Configurar varios usuarios de base de datos
Opcionalmente, puede configurar varios usuarios con permisos diferentes para tener acceso a la base de datos main.
De manera predeterminada, hay un extremo denominado mysql que tiene acceso de administrador a la base de datos. Para configurar varios usuarios de base de datos, debe definir varios extremos en el archivo services.yaml y declarar las relaciones en el archivo .magento.app.yaml. Para los entornos de ensayo y producción de Pro, envíe un vale de soporte de Adobe Commerce para solicitar al usuario adicional.
Utilice una matriz anidada para definir los puntos finales para el acceso específico del usuario. Cada extremo puede designar el acceso a uno o más esquemas (bases de datos) y diferentes niveles de permisos en cada uno.
Los niveles de permiso válidos son:
ro: solo se permiten consultas SELECT.rw: se permiten las consultas SELECT y las consultas INSERT, UPDATE y DELETE.admin: se permiten todas las consultas, incluidas las consultas DDL (CREATE TABLE, DROP TABLE, etc.).
Por ejemplo:
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
En el ejemplo anterior, el extremo admin proporciona acceso de nivel de administrador a la base de datos main, el extremo reporter proporciona acceso de solo lectura y el extremo importer proporciona acceso de lectura y escritura, lo que significa que:
- El usuario
admintiene control total de la base de datos. - El usuario
reportersolo tiene privilegios SELECT. - El usuario
importertiene privilegios de DELETE, SELECT, INSERT, UPDATE y.
Agregue los extremos definidos en el ejemplo anterior a la propiedad relationships del archivo .magento.app.yaml. Por ejemplo:
relationships:
database: "mysql:admin"
databasereporter: "mysql:reporter"
databaseimporter: "mysql:importer"
DEFINER para procedimientos y vistas almacenados.Conexión a la base de datos
El acceso a la base de datos MariaDB requiere directamente que utilice un SSH para iniciar sesión en el entorno remoto de la nube y conectarse a la base de datos.
-
Utilice SSH para iniciar sesión en el entorno remoto.
code language-bash magento-cloud ssh -
Recupere las credenciales de inicio de sesión de MySQL de las propiedades
databaseytypeen la variable $MAGENTO_CLOUD_RELATIONSHIPS.code language-bash echo $MAGENTO_CLOUD_RELATIONSHIPS | base64 -d | json_ppo
code language-bash php -r 'print_r(json_decode(base64_decode($_ENV["MAGENTO_CLOUD_RELATIONSHIPS"])));'En la respuesta, busque la información de MySQL. Por ejemplo:
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" } ], -
Conéctese a la base de datos.
-
Para empezar, utilice el siguiente comando:
code language-bash mysql -h database.internal -u <username> -
Para Pro, utilice el siguiente comando con el nombre de host, el número de puerto, el nombre de usuario y la contraseña recuperados de la variable
$MAGENTO_CLOUD_RELATIONSHIPS.code language-bash mysql -h <hostname> -P <number> -u <username> -p'<password>'
-
magento-cloud db:sql para conectarse a la base de datos remota y ejecutar comandos SQL.Conectar con base de datos secundaria
A veces, debe conectarse a la base de datos secundaria para mejorar el rendimiento de la base de datos o resolver los problemas de bloqueo de la base de datos. Si se requiere esta configuración, use "port" : 3304 para establecer la conexión. Consulte el tema Práctica recomendada para configurar la conexión esclava MySQL en la guía Prácticas recomendadas de implementación.
Resolución de problemas
Consulte los siguientes artículos de soporte de Adobe Commerce para obtener ayuda con la resolución de problemas de MySQL: