Linee guida generali di MySQL

Vedere Requisiti di sistema per le versioni supportate di MySQL.

L'Adobe fortemente consiglia di osservare il seguente standard durante la configurazione del database:

  • Adobe Commerce utilizza i trigger del database MySQL per migliorare l'accesso al database durante la reindicizzazione. Vengono creati quando la modalità indicizzatore è impostata su pianificazione. L’applicazione non supporta i trigger personalizzati nel database, poiché tali trigger possono introdurre incompatibilità con le versioni future di Adobe Commerce.
  • Acquisisci familiarità con le potenziali limitazioni del trigger MySQL prima di continuare.
  • Per migliorare la postura di sicurezza del database, attivare la modalità SQL STRICT_ALL_TABLES per impedire l'archiviazione di valori di dati non validi, che potrebbero causare interazioni di database indesiderate.
  • Adobe Commerce non supporta la replica basata su istruzioni MySQL. Utilizzare only replica basata su righe.
WARNING
Adobe Commerce attualmente utilizza CREATE TEMPORARY TABLE istruzioni nelle transazioni, che sono incompatibili con le implementazioni del database, utilizzando la replica basata su GTID, ad esempio istanze di seconda generazione di Google Cloud SQL. Considera MySQL per Cloud SQL 8.0 come alternativa.
NOTE
Se il server Web e il server di database si trovano su host diversi, eseguire le attività descritte in questo argomento sull'host del server di database, quindi vedere Configurare una connessione remota al database MySQL.

Installazione di MySQL su Ubuntu

Adobe Commerce 2.4 richiede un'installazione pulita di MySQL 8.0. Per istruzioni sull'installazione di MySQL nel computer, seguire i collegamenti riportati di seguito.

Se si prevede di importare un numero elevato di prodotti, è possibile aumentare il valore di max_allowed_packet che è maggiore del valore predefinito, ovvero 16 MB.

NOTE
Il valore predefinito si applica ai progetti locali di Adobe Commerce sull'infrastruttura cloud e. I clienti Adobe Commerce su infrastruttura cloud Pro devono aprire un ticket di supporto per aumentare il valore max_allowed_packet. I clienti di Adobe Commerce su infrastruttura cloud Starter possono aumentare il valore aggiornando la configurazione nel file /etc/mysql/mysql.cnf.

Per aumentare il valore, aprire il file /etc/mysql/mysql.cnf in un editor di testo e individuare il valore per max_allowed_packet. Salvare le modifiche apportate al file mysql.cnf, chiudere l'editor di testo e riavviare MySQL (service mysql restart).

Per verificare facoltativamente il valore impostato, immettere il comando seguente al prompt mysql>:

SHOW VARIABLES LIKE 'max_allowed_packet';

Quindi Configurare l'istanza del database.

Modifiche a MySQL 8

Per Adobe Commerce 2.4 è stato aggiunto il supporto per MySQL 8.
In questa sezione vengono descritte le modifiche principali apportate a MySQL 8 di cui gli sviluppatori devono essere a conoscenza.

Larghezza rimossa per i tipi interi (spaziatura interna)

La specifica della larghezza di visualizzazione per i tipi di dati integer (TINYINT, SMALLINT, MEDIUMINT, INT, BIGINT) è stata rimossa in MySQL 8.0.17. Le istruzioni che includono definizioni dei tipi di dati nell'output non mostrano più la larghezza di visualizzazione per i tipi interi, ad eccezione di TINYINT(1). I connettori MySQL presuppongono che le colonne TINYINT(1) abbiano avuto origine come colonne BOOLEANE. Questa eccezione consente loro di continuare a fare tale presupposto.

Esempio

Descrizione di admin_user in mysql 8.19

Campo
Tipo
Nullo
Chiave
Predefinito
Extra
user_id
int unsigned
NO
PRI
NULL
auto_increment
firstname
varchar(32)
NULL
lastname
varchar(32)
NULL
email
varchar(128)
NULL
username
varchar(40)
UNI
NULL
password
varchar(255)
NO
NULL
created
timestamp
NO
CURRENT_TIMESTAMP
DEFAULT_GENERATED
modified
timestamp
NO
CURRENT_TIMESTAMP
DEFAULT_GENERATED sull'aggiornamento CURRENT_TIMESTAMP
logdate
timestamp
NULL
lognum
smallint unsigned
NO
0

Ad eccezione di TINYINT(1), tutte le spaziature intere (TINYINT > 1, SMALLINT, MEDIUMINT, INT, BIGINT) devono essere rimosse dal file db_schema.xml.

Per ulteriori informazioni, vedere https://dev.mysql.com/doc/relnotes/mysql/8.0/en/news-8-0-19.html#mysqld-8-0-19-feature.

Comportamento predefinito di ORDER BY

Prima della versione 8.0, le voci venivano ordinate in base alla chiave esterna. L’ordinamento predefinito dipende dal motore utilizzato.
Specificare sempre un ordinamento se il codice dipende da un ordinamento specifico.

Qualificatori ASC e DESC obsoleti per GROUP BY

A partire da MySQL 8.0.13, i qualificatori ASC o DESC obsoleti per le clausole GROUP BY sono stati rimossi. Le query che in precedenza utilizzavano l'ordinamento GROUP BY possono produrre risultati diversi dalle versioni precedenti di MySQL. Per generare un determinato ordinamento, specificare una clausola ORDER BY.

Commerce e MySQL 8

Sono state apportate alcune modifiche ad Adobe Commerce per supportare correttamente MySQL 8.

Comportamento query e inserimento

Adobe Commerce ha disabilitato il comportamento di convalida regolare impostando SET SQL_MODE='' in /lib/internal/Magento/Framework/DB/Adapter/Pdo/Mysql.php:424.. Se la convalida è disattivata, è possibile che MySQL tronchi i dati. In MySQL il comportamento della query è cambiato: Select * on my_table where IP='127.0.0.1' non restituisce più risultati perché l'indirizzo IP viene ora visualizzato correttamente come stringa, anziché come numero intero.

Aggiornamento da MySQL 5.7 a MySQL 8

Per aggiornare correttamente MySQL dalla versione 5.7 alla versione 8, è necessario seguire i passaggi seguenti nell'ordine indicato:

  1. Aggiornare Adobe Commerce alla versione 2.4.0.
    Esegui il test completo e assicurati che il sistema funzioni come previsto.

  2. Abilita modalità di manutenzione:

    code language-bash
    bin/magento maintenance:enable
    
  3. Eseguire un backup del database:

    code language-bash
    bin/magento setup:backup --db
    
  4. Aggiornare MySQL alla versione 8.

  5. Importare i dati di backup in MySQL.

  6. Pulisci la cache:

    code language-bash
    bin/magento cache:clean
    
  7. Disattiva modalità di manutenzione:

    code language-bash
    bin/magento maintenance:disable
    

Configurazione dell’istanza del database

Questa sezione illustra come creare un’istanza di database per Adobe Commerce. Sebbene sia consigliata una nuova istanza di database, è possibile installare Adobe Commerce con un'istanza di database esistente.

Per configurare un'istanza di database MySQL:

  1. Accedere al server del database come qualsiasi utente.

  2. Passare al prompt dei comandi MySQL:

    code language-bash
    mysql -u root -p
    
  3. Immettere la password dell'utente MySQL root quando richiesto.

  4. Immettere i comandi seguenti nell'ordine indicato per creare un'istanza di database denominata magento con nome utente magento:

    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;
    
  5. Immettere exit per uscire dal prompt dei comandi.

  6. Verificare il database:

    code language-bash
    mysql -u magento -p
    

    Se viene visualizzato il monitoraggio MySQL, il database è stato creato correttamente. Se viene visualizzato un errore, ripetere i comandi precedenti.

  7. Se il server Web e il server di database si trovano su host diversi, eseguire le attività descritte in questo argomento sull'host del server di database, quindi vedere Configurare una connessione remota al database MySQL.

    È consigliabile configurare l'istanza di database in base alle esigenze aziendali. Durante la configurazione del database, tenere presente quanto segue:

    • Gli indicizzatori richiedono valori tmp_table_size e max_heap_table_size superiori (ad esempio, 64 M). Se si configura il parametro batch_size, è possibile regolare tale valore insieme alle impostazioni delle dimensioni della tabella per migliorare le prestazioni dell'indicizzatore. Per ulteriori informazioni, consultare la Guida all'ottimizzazione.

    • Per prestazioni ottimali, assicurarsi che tutte le tabelle indice MySQL e Adobe Commerce possano essere mantenute in memoria, ad esempio configurare innodb_buffer_pool_size.

    • La reindicizzazione su MariaDB 10.4 richiede più tempo rispetto ad altre versioni di MariaDB o MySQL. Consulta Best practice per la configurazione.

  8. Affinché i campi MySQL TIMESTAMP seguano le preferenze e la composizione previste dall'architettura dello schema dichiarativo dell'applicazione, la variabile di sistema explicit_defaults_for_timestamp deve essere impostata su on.

    Riferimenti:

    Se questa impostazione non è abilitata, bin/magento setup:db:status segnala sempre che Declarative Schema is not up to date.

NOTE
L'impostazione explicit_defaults_for_timestamp è obsoleta. Questa impostazione consente di controllare i comportamenti di MARCA TEMPORALE obsoleti che verranno rimossi in una futura versione di MySQL. Quando questi comportamenti vengono rimossi, viene rimossa anche l'impostazione explicit_defaults_for_timestamp.
WARNING
Per i progetti di infrastruttura cloud di Adobe Commerce, l'impostazione explicit_defaults_for_timestamp per MySQL (MariaDB) è OFF.

La reindicizzazione su MariaDB 10.4 e 10.6 richiede più tempo rispetto alle versioni precedenti di MariaDB o MySQL. Per accelerare la reindicizzazione, si consiglia di impostare i seguenti parametri di configurazione MariaDB:

Se si verifica un peggioramento delle prestazioni non correlato all'indicizzazione dopo l'aggiornamento a MariaDB 10.6, provare ad abilitare l'impostazione --query-cache-type. Ad esempio, --query-cache-type=ON.

Prima di aggiornare Adobe Commerce ai progetti di infrastruttura cloud, potrebbe essere necessario aggiornare anche MariaDB (consulta le best practice per l'aggiornamento di 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

Oltre a questi consigli, è necessario consultare l'amministratore del database per configurare i seguenti parametri:

NOTE
Queste impostazioni sono disponibili solo per le distribuzioni locali. I clienti di Adobe Commerce su infrastruttura cloud non hanno accesso a queste impostazioni.
recommendation-more-help
0f8e7db5-0e9c-4002-a5b8-a0088077d995