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: 5120
note 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 deadmin
a 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_charset
default_collation
max_allowed_packet
1
a 100
.optimizer_switch
optimizer_use_condition_selectivity
1
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
admin
tiene control total de la base de datos. - El usuario
reporter
solo tiene privilegios SELECT. - El usuario
importer
tiene 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
database
ytype
en la variable $MAGENTO_CLOUD_RELATIONSHIPS.code language-bash echo $MAGENTO_CLOUD_RELATIONSHIPS | base64 -d | json_pp
o
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: