Prerequisiti per l'aggiornamento di MariaDB

Prima di aggiornare Adobe Commerce sull’infrastruttura cloud, potrebbe essere necessario aggiornare il software del database se si utilizza MariaDB. Ad esempio:

  • Adobe Commerce 2.4.6 con MariaDB versione 10.5.1 o successiva
  • Adobe Commerce 2.3.5 con MariaDB versione 10.3 o precedente

Adobe Commerce 2.4.6

A partire da MariaDB 10.5.1, le colonne con formati temporali precedenti sono contrassegnate con un commento /* mariadb-5.3 */ nell'output delle istruzioni SHOW CREATE TABLE, SHOW COLUMNS, DESCRIBE e nella colonna COLUMN_TYPE della tabella INFORMATION_SCHEMA.COLUMNS. Consulta la documentazione di MariaDB.

Adobe Commerce non è in grado di mappare le colonne di date su un tipo di dati corretto a causa del commento MariaDB, che potrebbe causare un comportamento imprevisto nel codice personalizzato.

Per evitare un comportamento imprevisto durante l’aggiornamento di MariaDB dalle versioni precedenti alla versione 10.6, l’Adobe consiglia di migrare le colonne al nuovo formato interno.

Configurazione predefinita

In MariaDB 10.1.2, è stato introdotto un nuovo formato temporale da MySQL 5.6. La variabile di sistema mysql56_temporal_format consente al database di convertire automaticamente il formato data precedente in quello nuovo quando viene eseguita una tabella alter o viene importato un database. La configurazione predefinita per mysql56_temporal_format è sempre abilitata in Adobe Commerce sull'infrastruttura cloud.

Colonne data di migrazione

La query seguente mostra la tabella e le colonne interessate che devono essere migrate dopo l'aggiornamento di MariaDB a 10.5.1 o versione successiva:

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

La migrazione delle colonne al nuovo formato di data interno richiede la reimportazione del database o l’esecuzione di alter sulla colonna identificata con la stessa definizione di colonna. La query seguente genera le query di modifica necessarie:

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
È importante migrare le colonne nel nuovo formato data interno prima della distribuzione del nuovo codice per evitare comportamenti imprevisti.

Adobe Commerce 2.3.5

L'aggiornamento del servizio MariaDB sull'infrastruttura cloud dalla versione 10.0 o 10.2 alla versione 10.3, 10.4 o 10.5. La versione 10.3 o successiva di MariaDB richiede che il database utilizzi il formato di riga dinamico e Adobe Commerce richiede l'utilizzo del motore di archiviazione InnoDB per le tabelle. Questo articolo spiega come aggiornare il database per soddisfare i requisiti MariaDB.

Dopo aver preparato il database, invia un ticket di supporto Adobe Commerce per aggiornare la versione del servizio MariaDB nell’infrastruttura cloud prima di procedere con il processo di aggiornamento di Adobe Commerce.

Preparare il database per l'aggiornamento

Prima che il team di supporto Adobe Commerce inizi il processo di aggiornamento, preparare il database convertendo le tabelle di database:

  • Converti il formato riga da COMPACT in DYNAMIC
  • Cambia il motore di archiviazione da MyISAM a InnoDB

Quando pianifichi e pianifichi la conversione, tieni presenti le seguenti considerazioni:

  • La conversione da COMPACT a DYNAMIC tabelle può richiedere diverse ore con un database di grandi dimensioni.

  • Per evitare il danneggiamento dei dati, non completare il lavoro di conversione su un sito live.

  • Completa il lavoro di conversione durante un periodo di traffico ridotto sul tuo sito.

  • Passa alla modalità di manutenzione prima di eseguire i comandi per convertire le tabelle del database.

Converti formato riga tabella database

È possibile convertire le tabelle in un nodo del cluster. Le modifiche vengono replicate automaticamente negli altri nodi del servizio.

  1. Dall’ambiente Adobe Commerce sull’infrastruttura cloud, utilizza SSH per connettersi al nodo 1.

  2. Accedi a MariaDB.

  3. Identificare le tabelle da convertire dal formato compatto a quello dinamico.

    code language-mysql
    SELECT table_name, row_format FROM information_schema.tables WHERE table_schema=DATABASE() and row_format = 'Compact';
    
  4. Determina le dimensioni della tabella in modo da poter pianificare il lavoro di conversione.

    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;
    

    La conversione di tabelle più grandi richiede più tempo. Esaminare le tabelle e raggruppare il lavoro di conversione in base alla priorità e alla dimensione della tabella per pianificare le finestre di manutenzione necessarie.

  5. Converte tutte le tabelle in formato dinamico una alla volta.

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

Converti formato di archiviazione tabella database

È possibile convertire le tabelle in un nodo del cluster. Le modifiche vengono replicate automaticamente negli altri nodi del servizio.

Il processo di conversione del formato di archiviazione è diverso per i progetti Adobe Commerce Starter e Adobe Commerce Pro.

  • Per l'architettura Starter, utilizzare il comando MySQL ALTER per convertire il formato.
  • Nell'architettura Pro, utilizzare i comandi MySQL CREATE e SELECT per creare una tabella di database con archiviazione InnoDB e copiare i dati dalla tabella esistente nella nuova tabella. Questo metodo assicura che le modifiche vengano replicate in tutti i nodi del cluster.

Converti formato di archiviazione tabella per progetti Adobe Commerce Pro

  1. Identificare le tabelle che utilizzano l'archiviazione MyISAM.

    code language-mysql
    SELECT table_name FROM INFORMATION_SCHEMA.TABLES WHERE engine = 'MyISAM';
    
  2. Convertire tutte le tabelle nel formato di archiviazione InnoDB una alla volta.

    • Rinomina la tabella esistente per evitare conflitti di nomi.

      code language-mysql
      RENAME TABLE <existing_table> <table_old>;
      
    • Creare una tabella che utilizza l'archiviazione InnoDB utilizzando i dati della tabella esistente.

      code language-mysql
      CREATE TABLE <existing_table> ENGINE=InnoDB SELECT * from <table_old>;
      
    • Verifica che la nuova tabella contenga tutti i dati richiesti.

    • Eliminare la tabella originale rinominata.

Converti formato di archiviazione tabella per progetti Adobe Commerce Starter

  1. Identificare le tabelle che utilizzano l'archiviazione MyISAM.

    code language-mysql
    SELECT table_name FROM INFORMATION_SCHEMA.TABLES WHERE engine = 'MyISAM';
    
  2. Convertire le tabelle che utilizzano l'archiviazione MyISAM nell'archiviazione InnoDB.

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

Verificare la conversione del database

Il giorno prima dell’aggiornamento pianificato a MariaDB versione 10.3, 10.4 o 10.6, verifica che tutte le tabelle abbiano il formato di riga e il motore di archiviazione corretti. La verifica è necessaria perché le distribuzioni del codice effettuate dopo il completamento della conversione potrebbero causare il ripristino della configurazione originale di alcune tabelle.

  1. Accedi al database.

  2. Verificare la presenza di tabelle che presentano ancora il formato di riga COMPACT.

    code language-mysql
    SELECT table_name, row_format FROM information_schema.tables WHERE table_schema=DATABASE() and row_format = 'Compact';
    
  3. Controllare le tabelle che utilizzano ancora il formato di archiviazione MyISAM

    code language-mysql
    SELECT table_name FROM INFORMATION_SCHEMA.TABLES WHERE engine = 'MyISAM';
    
  4. Se sono state ripristinate delle tabelle, ripetere i passaggi per modificare il formato delle righe della tabella e il motore di archiviazione.

Cambia il motore di archiviazione

Vedere Converti tabelle MyISAM in InnoDB.

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