Actualizar los requisitos previos de MariaDB

Antes de actualizar Adobe Commerce en una infraestructura en la nube, es posible que también tenga que actualizar el software de la base de datos si utiliza 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

Adobe Commerce 2.4.6

A partir de MariaDB 10.5.1, las columnas con formatos temporales antiguos se marcan con una /* mariadb-5.3 */ comentario en la salida del SHOW CREATE TABLE, SHOW COLUMNS, DESCRIBE , así como en el COLUMN_TYPE de la columna INFORMATION_SCHEMA.COLUMNS tabla. Consulte la documentación de MariaDB.

Adobe Commerce no puede asignar las columnas de fecha a un tipo de datos adecuado debido al comentario de MariaDB, lo que puede provocar un comportamiento inesperado en el código personalizado.

Para evitar comportamientos inesperados al actualizar MariaDB de versiones anteriores a la 10.6, Adobe recomienda migrar las columnas al nuevo formato interno.

Configuración predeterminada

En MariaDB 10.1.2, se introdujo un nuevo formato temporal desde MySQL 5.6. El mysql56_temporal_format la variable del sistema permite a la base de datos convertir automáticamente el antiguo formato de fecha al nuevo cuando se ejecuta una tabla alter o se importa la base de datos. La configuración predeterminada para mysql56_temporal_format siempre está habilitado en Adobe Commerce en la infraestructura en la nube.

Migración de columnas de fecha

La siguiente consulta muestra la tabla y las columnas afectadas que deben migrarse después de actualizar MariaDB a 10.5.1 o posterior:

SELECT * FROM INFORMATION_SCHEMA.`COLUMNS` WHERE TABLE_SCHEMA = DATABASE() AND COLUMN_TYPE LIKE '%mariadb%';

La migración de las columnas al nuevo formato de fecha interno requiere volver a importar la base de datos o ejecutarse posteriormente en la columna identificada con la misma definición de columna. La siguiente consulta genera las consultas ALTER necesarias:

SELECT CONCAT( 'ALTER TABLE `', COALESCE(TABLE_NAME), '`', ' MODIFY ', '`', COALESCE(COLUMN_NAME), '`', ' ', COALESCE(DATA_TYPE), ' ', IF(COALESCE(IS_NULLABLE)='YES','NULL', 'NOT NULL'), IF(COLUMN_DEFAULT IS NOT NULL,CONCAT(' DEFAULT ',COLUMN_DEFAULT),' '), ' ', COALESCE(EXTRA), ' COMMENT \'', COALESCE(COLUMN_COMMENT), '\';' ) as sql_query FROM INFORMATION_SCHEMA.`COLUMNS` WHERE TABLE_SCHEMA = DATABASE() AND COLUMN_TYPE LIKE '%mariadb%';
NOTE
Es importante migrar las columnas al nuevo formato de fecha interno antes implementar el nuevo código para evitar comportamientos inesperados.

Adobe Commerce 2.3.5

Actualización del servicio MariaDB en la infraestructura de la nube de la versión 10.0 o 10.2 a la versión 10.3, 10.4 o 10.5. MariaDB versión 10.3 y posteriores requieren que la base de datos utilice el formato de fila de tabla dinámica y Adobe Commerce requiere el uso del motor de almacenamiento InnoDB para tablas. Este artículo explica cómo actualizar la base de datos para cumplir con estos requisitos de MariaDB.

Después de preparar la base de datos, envíe un ticket de asistencia de Adobe Commerce para actualizar la versión del servicio MariaDB en su infraestructura de nube antes de continuar con el proceso de actualización de Adobe Commerce.

Preparar la base de datos para la actualización

Antes de que el equipo de asistencia de Adobe Commerce inicie el proceso de actualización, prepare la base de datos convirtiendo las tablas de la base de datos:

  • Conversión del formato de fila de COMPACT hasta DYNAMIC
  • Cambiar el motor de almacenamiento de MyISAM hasta InnoDB

Tenga en cuenta las siguientes consideraciones al planificar y programar la conversión:

  • Convirtiendo desde COMPACT hasta DYNAMIC Las tablas pueden tardar varias horas con una base de datos de gran tamaño.

  • Para evitar que se dañen los datos, no complete el trabajo de conversión en un sitio activo.

  • Complete el trabajo de conversión durante un período de poco tráfico en el sitio.

  • Cambie el sitio a modo de mantenimiento antes de ejecutar los comandos para convertir tablas de base de datos.

Convertir formato de fila de tabla de base de datos

Puede convertir tablas en un nodo del clúster. Los cambios se replican automáticamente en los demás nodos de servicio.

  1. Desde su Adobe Commerce en el entorno de la infraestructura de la nube, utilice SSH para conectarse al nodo 1.

  2. Inicie sesión en MariaDB.

  3. Identifique las tablas que se van a convertir de formato compacto a dinámico.

    code language-mysql
    SELECT table_name, row_format FROM information_schema.tables WHERE table_schema=DATABASE() and row_format = 'Compact';
    
  4. Determine los tamaños de la tabla para poder programar el trabajo de conversión.

    code language-mysql
    SELECT table_schema as 'Database', table_name AS 'Table', round(((data_length + index_length) / 1024 / 1024), 2) 'Size in MB' FROM information_schema.TABLES ORDER BY (data_length + index_length) DESC;
    

    Las tablas más grandes tardan más en convertirse. Revise las tablas y agrupe el trabajo de conversión por prioridad y tamaño de tabla para ayudar a planificar las ventanas de mantenimiento necesarias.

  5. Convierta todas las tablas a formato dinámico de una en una.

    code language-mysql
    ALTER TABLE [ table name here ] ROW_FORMAT=DYNAMIC;
    

Convertir formato de almacenamiento de tabla de base de datos

Puede convertir tablas en un nodo del clúster. Los cambios se replican automáticamente en los demás nodos de servicio.

El proceso para convertir el formato de almacenamiento es diferente para los proyectos de Adobe Commerce Starter y Adobe Commerce Pro.

  • Para la arquitectura de inicio, utilice MySQL ALTER para convertir el formato.
  • En la arquitectura Pro, utilice el MySQL CREATE y SELECT comandos para crear una tabla de base de datos con InnoDB almacene y copie los datos de la tabla existente en la nueva tabla. Este método garantiza que los cambios se replican en todos los nodos del clúster.

Convertir formato de almacenamiento de tabla para proyectos de Adobe Commerce Pro

  1. Identificar tablas que utilizan MyISAM almacenamiento.

    code language-mysql
    SELECT table_name FROM INFORMATION_SCHEMA.TABLES WHERE engine = 'MyISAM';
    
  2. Convertir todas las tablas a InnoDB formato de almacenamiento de uno en uno.

    • Cambie el nombre de la tabla existente para evitar conflictos de nombres.

      code language-mysql
      RENAME TABLE <existing_table> <table_old>;
      
    • Cree una tabla que utilice InnoDB almacenamiento con los datos de la tabla existente.

      code language-mysql
      CREATE TABLE <existing_table> ENGINE=InnoDB SELECT * from <table_old>;
      
    • Compruebe que la nueva tabla tiene todos los datos necesarios.

    • Elimine la tabla original cuyo nombre ha cambiado.

Convertir formato de almacenamiento de tabla para proyectos de Adobe Commerce Starter

  1. Identificar tablas que utilizan MyISAM almacenamiento.

    code language-mysql
    SELECT table_name FROM INFORMATION_SCHEMA.TABLES WHERE engine = 'MyISAM';
    
  2. Convertir tablas que utilizan MyISAM almacenamiento en InnoDB almacenamiento.

    code language-mysql
    ALTER TABLE [ table name here ] ENGINE=InnoDB;
    

Comprobar la conversión de base de datos

El día anterior a la actualización programada a MariaDB versión 10.3, 10.4 o 10.6, compruebe que todas las tablas tengan el formato de fila y el motor de almacenamiento correctos. Es necesario realizar la comprobación porque las implementaciones de código realizadas después de completar la conversión pueden provocar que algunas tablas vuelvan a su configuración original.

  1. Inicie sesión en la base de datos.

  2. Compruebe si hay tablas que todavía tengan COMPACT formato de fila.

    code language-mysql
    SELECT table_name, row_format FROM information_schema.tables WHERE table_schema=DATABASE() and row_format = 'Compact';
    
  3. Compruebe si hay tablas que sigan utilizando MyISAM formato de almacenamiento

    code language-mysql
    SELECT table_name FROM INFORMATION_SCHEMA.TABLES WHERE engine = 'MyISAM';
    
  4. Si se ha revertido alguna tabla, repita los pasos para cambiar el formato de fila de tabla y el motor de almacenamiento.

Cambio del motor de almacenamiento

Consulte Convertir tablas MyISAM a InnoDB.

recommendation-more-help
754cbbf3-3a3c-4af3-b6ce-9d34390f3a60