Linee guida generali di MySQL

Consulta Requisiti di sistema versioni supportate di MySQL.

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

  • Adobe Commerce utilizza Trigger del database MySQL per migliorare l'accesso al database durante la reindicizzazione. Vengono create quando la modalità di indicizzazione è 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 queste potenziali limitazioni del trigger MySQL prima di continuare.
  • Per migliorare la postura di protezione del database, abilitare STRICT_ALL_TABLES Modalità SQL per impedire la memorizzazione di valori di dati non validi, che potrebbe causare interazioni di database indesiderate.
  • Adobe Commerce sì non supporta la replica basata su istruzioni MySQL. Assicurati di utilizzare solo replica basata su righe.
WARNING
Adobe Commerce attualmente utilizza CREATE TEMPORARY TABLE rendiconti all'interno di transazioni, che sono incompatibile con le implementazioni di database utilizza 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 operazioni descritte in questo argomento sull'host del server di database e 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 prevedi di importare un numero elevato di prodotti, puoi aumentare il valore per max_allowed_packet maggiore del valore predefinito, 16 MB.

NOTE
Il valore predefinito si applica ad Adobe Commerce su infrastruttura cloud e progetti in loco. I clienti Adobe Commerce su infrastruttura cloud Pro devono aprire un ticket di supporto per aumentare il max_allowed_packet valore. I clienti di Adobe Commerce su infrastruttura cloud Starter possono aumentare il valore aggiornando la configurazione nella sezione /etc/mysql/mysql.cnf file.

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

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

SHOW VARIABLES LIKE 'max_allowed_packet';

Allora, 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 all’aggiornamento CURRENT_TIMESTAMP
logdate
timestamp
NULL
lognum
smallint unsigned
NO
0

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

Per ulteriori informazioni, consulta 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, il ASC o DESC qualificatori per GROUP BY clausole rimosse. Query basate in precedenza su GROUP BY L'ordinamento può produrre risultati diversi dalle versioni precedenti di MySQL. Per generare un determinato ordinamento, fornisci un ORDER BY clausola.

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 MySQL root password dell'utente quando richiesto.

  4. Immettere i seguenti comandi 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. Invio 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 operazioni descritte in questo argomento sull'host del server di database e 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 un valore più alto tmp_table_size e max_heap_table_size valori (ad esempio, 64 M). Se configuri il batch_size , è possibile regolare tale valore insieme alle impostazioni delle dimensioni della tabella per migliorare le prestazioni dell'indicizzatore. Consulta la sezione Guida all’ottimizzazione per ulteriori informazioni.

    • 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 di configurazione.

  8. Per MySQL TIMESTAMP campi che seguono le preferenze e la composizione previste dall'architettura dello schema dichiarativo dell'applicazione, la variabile di sistema explicit_defaults_for_timestamp deve essere impostato su on.

    Riferimenti:

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

NOTE
Il explicit_defaults_for_timestamp L'impostazione è 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, il explicit_defaults_for_timestamp viene rimossa anche l'impostazione.
WARNING
Per i progetti Adobe Commerce su infrastrutture cloud, la explicit_defaults_for_timestamp impostazione predefinita per MySQL (MariaDB): DISATTIVATO.

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, è consigliabile attivare --query-cache-type impostazione. 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 a 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