Directrices generales de MySQL
Consulte Requisitos del sistema para ver las versiones compatibles de MySQL.
El Adobe strong recomienda que cumpla el estándar siguiente al configurar la base de datos:
- Adobe Commerce usa déclencheur de base de datos MySQL para mejorar el acceso a la base de datos durante la reindexación. Estas se crean cuando el modo de indizador se establece en schedule. La aplicación no admite ningún déclencheur personalizado en la base de datos porque los déclencheur personalizados pueden producir incompatibilidades con versiones futuras de Adobe Commerce.
- Familiarícese con estas posibles limitaciones de déclencheur de MySQL antes de continuar.
- Para mejorar la postura de seguridad de la base de datos, habilite el modo SQL
STRICT_ALL_TABLES
para evitar almacenar valores de datos no válidos, lo que podría provocar interacciones de base de datos no deseadas. - Adobe Commerce no admite la replicación basada en instrucciones MySQL. Asegúrese de usar solo replicación basada en filas.
CREATE TEMPORARY TABLE
dentro de transacciones, que son incompatibles con implementaciones de base de datos que usan replicación basada en GTID, como instancias de segunda generación de SQL de Google Cloud. Considere MySQL para Cloud SQL 8.0 como alternativa.Instalación de MySQL en Ubuntu
Adobe Commerce 2.4 requiere una instalación limpia de MySQL 8.0. Siga los enlaces a continuación para obtener instrucciones sobre la instalación de MySQL en su máquina.
Si espera importar una gran cantidad de productos, puede aumentar el valor de max_allowed_packet
que sea mayor que el valor predeterminado de 16 MB.
max_allowed_packet
. Los clientes de Adobe Commerce on cloud Infrastructure Starter pueden aumentar el valor al actualizar la configuración en el archivo /etc/mysql/mysql.cnf
.Para aumentar el valor, abra el archivo /etc/mysql/mysql.cnf
en un editor de texto y busque el valor de max_allowed_packet
. Guarde los cambios en el archivo mysql.cnf
, cierre el editor de texto y reinicie MySQL (service mysql restart
).
Para comprobar de forma opcional el valor que ha establecido, escriba el siguiente comando en el símbolo del sistema mysql>
:
SHOW VARIABLES LIKE 'max_allowed_packet';
A continuación, configure la instancia de base de datos.
Cambios de MySQL 8
Para Adobe Commerce 2.4, hemos agregado compatibilidad con MySQL 8.
En esta sección se describen los cambios más importantes en MySQL 8 que los desarrolladores deben tener en cuenta.
Se ha eliminado la anchura para los tipos de enteros (relleno)
La especificación de anchura de visualización para tipos de datos enteros (TINYINT, SMALLINT, MEDIUMINT, INT, BIGINT) ha quedado obsoleta en MySQL 8.0.17. Las instrucciones que incluyen definiciones de tipo de datos en su salida ya no muestran el ancho de visualización para tipos enteros, excepto TINYINT(1). Los conectores MySQL suponen que las columnas TINYINT(1) se originaron como columnas BOOLEANAS. Esta excepción les permite seguir haciendo esa suposición.
Ejemplo
Describir admin_user en mysql 8.19
int unsigned
NULL
auto_increment
firstname
varchar(32)
NULL
lastname
varchar(32
)NULL
email
varchar(128)
NULL
username
varchar(40)
NULL
password
varchar(255)
NULL
created
timestamp
CURRENT_TIMESTAMP
DEFAULT_GENERATED
modified
timestamp
CURRENT_TIMESTAMP
DEFAULT_GENERATED
en la actualización CURRENT_TIMESTAMP
logdate
timestamp
NULL
lognum
smallint unsigned
0
Excepto TINYINT(1), todo el relleno entero (TINYINT > 1, SMALLINT, MEDIUMINT, INT, BIGINT) debe quitarse del archivo db_schema.xml
.
Para obtener más información, consulte https://dev.mysql.com/doc/relnotes/mysql/8.0/en/news-8-0-19.html#mysqld-8-0-19-feature.
Comportamiento ORDER BY predeterminado
Antes de la versión 8.0, las entradas se ordenaban por clave externa. El orden predeterminado depende del motor que se utilice.
Especifique siempre un criterio de ordenación si el código depende de un criterio de ordenación específico.
Calificadores ASC y DESC obsoletos para GROUP BY
A partir de MySQL 8.0.13, se han eliminado los calificadores obsoletos ASC
o DESC
para las cláusulas GROUP BY
. Las consultas que anteriormente dependían de la ordenación GROUP BY
pueden producir resultados diferentes de las versiones anteriores de MySQL. Para generar un criterio de ordenación determinado, proporcione una cláusula ORDER BY
.
Commerce y MySQL 8
Se han realizado algunos cambios en Adobe Commerce para admitir correctamente MySQL 8.
Comportamiento de consulta e inserción
Adobe Commerce deshabilitó el comportamiento de validación normal al establecer SET SQL_MODE='' en /lib/internal/Magento/Framework/DB/Adapter/Pdo/Mysql.php:424.
. Con la validación deshabilitada, es posible que MySQL trunque los datos. En MySQL, el comportamiento de la consulta ha cambiado: Select * on my_table where IP='127.0.0.1'
ya no devuelve resultados porque la dirección IP ahora se ve correctamente como una cadena, en lugar de como un número entero.
Actualización de MySQL 5.7 a MySQL 8
Para actualizar correctamente MySQL de la versión 5.7 a la versión 8, debe seguir estos pasos en orden:
-
Actualice Adobe Commerce a 2.4.0.
Pruebe todo y asegúrese de que el sistema funciona según lo esperado. -
Activar modo de mantenimiento:
code language-bash bin/magento maintenance:enable
-
Hacer una copia de seguridad de base de datos:
code language-bash bin/magento setup:backup --db
-
Actualice MySQL a la versión 8.
-
Importe los datos de copia de seguridad en MySQL.
-
Limpie la caché:
code language-bash bin/magento cache:clean
-
Desactivar el modo de mantenimiento:
code language-bash bin/magento maintenance:disable
Configuración de la instancia de base de datos
En esta sección se explica cómo crear una instancia de base de datos para Adobe Commerce. Aunque se recomienda una nueva instancia de base de datos, puede instalar Adobe Commerce con una instancia de base de datos existente.
Para configurar una instancia de base de datos MySQL:
-
Inicie sesión en el servidor de la base de datos como cualquier usuario.
-
Vaya al símbolo del sistema de MySQL:
code language-bash mysql -u root -p
-
Escriba la contraseña del usuario MySQL
root
cuando se le solicite. -
Introduzca los siguientes comandos en el orden mostrado para crear una instancia de base de datos denominada
magento
con el nombre de usuariomagento
:code language-sql create database magento;
code language-sql create user 'magento'@'localhost' IDENTIFIED BY 'magento';
code language-sql GRANT ALL ON magento.* TO 'magento'@'localhost';
code language-sql flush privileges;
-
Escriba
exit
para salir del símbolo del sistema. -
Compruebe la base de datos:
code language-bash mysql -u magento -p
Si se muestra el monitor MySQL, ha creado correctamente la base de datos. Si aparece un error, repita los comandos anteriores.
-
Si el servidor web y el servidor de base de datos están en hosts diferentes, realice las tareas descritas en este tema en el host del servidor de base de datos y, a continuación, vea Configurar una conexión de base de datos MySQL remota.
Le recomendamos que configure la instancia de la base de datos según corresponda para su negocio. Al configurar la base de datos, tenga en cuenta lo siguiente:
-
Los indizadores requieren valores superiores de
tmp_table_size
ymax_heap_table_size
(por ejemplo, 64 M). Si configura el parámetrobatch_size
, puede ajustar ese valor junto con la configuración del tamaño de la tabla para mejorar el rendimiento del indizador. Consulte la Guía de optimización para obtener más información. -
Para obtener un rendimiento óptimo, asegúrese de que todas las tablas de índice MySQL y Adobe Commerce se puedan conservar en memoria (por ejemplo, configure
innodb_buffer_pool_size
). -
La reindexación en MariaDB 10.4 tarda más tiempo en comparación con otras versiones de MariaDB o MySQL. Consulte Prácticas recomendadas de configuración.
-
-
Para que los campos MySQL
TIMESTAMP
sigan las preferencias y la composición esperadas por la arquitectura de esquema declarativo de la aplicación, la variable del sistemaexplicit_defaults_for_timestamp
debe establecerse enon
.Referencias:
Si esta configuración no está habilitada,
bin/magento setup:db:status
siempre informa queDeclarative Schema is not up to date
.
explicit_defaults_for_timestamp
está obsoleta. Esta opción controla los comportamientos de TIMESTAMP obsoletos que se eliminarán en una versión futura de MySQL. Cuando se eliminan esos comportamientos, también se elimina la configuración explicit_defaults_for_timestamp
.explicit_defaults_for_timestamp
para MySQL (MariaDB) tiene el valor predeterminado OFF.La reindexación en MariaDB 10.4 y 10.6 tarda más tiempo en comparación con versiones anteriores de MariaDB o MySQL. Para acelerar la reindexación, se recomienda configurar estos parámetros de configuración de MariaDB:
Si experimenta una degradación del rendimiento no relacionada con la indexación después de actualizar a MariaDB 10.6, considere habilitar la configuración --query-cache-type
. Por ejemplo, --query-cache-type=ON
.
Antes de actualizar Adobe Commerce en proyectos de infraestructura en la nube, es posible que también deba actualizar MariaDB (consulte Prácticas recomendadas de actualización de MariaDB).
Por ejemplo:
- Adobe Commerce 2.4.6 con MariaDB versión 10.5.1 o superior
- Adobe Commerce 2.3.5 con MariaDB versión 10.3 o anterior
Además de estas recomendaciones, debe consultar al administrador de la base de datos sobre la configuración de los siguientes parámetros: