Configura servizio MySQL

Il servizio mysql fornisce l'archiviazione dei dati persistenti in base alle versioni da 10.2 a 10.4 di MariaDB, che supportano il motore di archiviazione XtraDB e le funzionalità reimplementate di MySQL 5.6 e 5.7.

La reindicizzazione su MariaDB 10.4 richiede più tempo rispetto ad altre versioni di MariaDB o MySQL. Consulta Indicizzatori nella Guida alle best practice per le prestazioni.

WARNING
Presta attenzione quando aggiorni MariaDB dalla versione 10.1 alla versione 10.2. MariaDB 10.1 è l'ultima versione che supporta XtraDB come motore di archiviazione. MariaDB 10.2 utilizza InnoDB per il motore di archiviazione. Dopo l’aggiornamento da 10.1 a 10.2, non è possibile ripristinare la modifica. Adobe Commerce supporta entrambi i motori di archiviazione; tuttavia, è necessario controllare le estensioni e gli altri sistemi utilizzati dal progetto per assicurarsi che siano compatibili con MariaDB 10.2. Vedere Modifiche non compatibili tra 10.1 e 10.2.

Utilizzare le istruzioni seguenti per la configurazione del servizio negli ambienti di integrazione Pro e negli ambienti Starter, incluso il ramo master.

NOTE
Invia un ticket di supporto Adobe Commerce per modificare la configurazione del servizio negli ambienti di produzione e staging di Pro.

Per abilitare MySQL:

  1. Aggiungere il nome, il tipo e il valore del disco richiesti (in MB) al file .magento/services.yaml.

    code language-yaml
    mysql:
        type: mysql:<version>
        disk: 5120
    
    note tip
    TIP
    Gli errori MySQL, ad esempio PDO Exception: MySQL server has gone away, possono verificarsi a causa di spazio su disco insufficiente. Verificare di aver allocato spazio su disco sufficiente al servizio nel file .magento/services.yaml.
  2. Configurare le relazioni nel file .magento.app.yaml.

    code language-yaml
    relationships:
        database: "mysql:mysql"
    
  3. Aggiungi, esegui il commit e invia le modifiche al codice.

    code language-bash
    git add .magento/services.yaml .magento.app.yaml && git commit -m "Enable mysql service" && git push origin <branch-name>
    
  4. Verificare le relazioni del servizio.

TIP
Dopo la configurazione iniziale del servizio, è possibile modificare la versione del software per un servizio installato aggiornando i file di configurazione services.yaml e .magento.app.yaml. Per informazioni sull'aggiornamento o il downgrade di un servizio, vedere Modifica versione del servizio.

Configura database MySQL

Durante la configurazione del database MySQL sono disponibili le seguenti opzioni:

  • schemas - Uno schema definisce un database. Lo schema predefinito è il database main.
  • endpoints - Ogni endpoint rappresenta una credenziale con privilegi specifici. L'endpoint predefinito è mysql, che ha accesso admin al database main.
  • properties - Le proprietà vengono utilizzate per definire configurazioni di database aggiuntive.

Di seguito è riportato un esempio di configurazione di base nel file .magento/services.yaml:

mysql:
    type: mysql:10.4
    disk: 5120
    configuration:
        properties:
            optimizer_switch: "rowid_filter=off"
            optimizer_use_condition_selectivity: 1

properties nell'esempio precedente modifica le impostazioni predefinite di optimizer come consigliato nella guida alle best practice per le prestazioni.

Opzioni di configurazione MariaDB:

Opzioni
Descrizione
Valore predefinito
default_charset
Il set di caratteri predefinito.
utf8mb4
default_collation
Regole di confronto predefinite.
utf8mb4_unicode_ci
max_allowed_packet
Dimensioni massime per i pacchetti, in MB. Da 1 a 100.
16
optimizer_switch
Impostare i valori per l'ottimizzatore di query. Consulta la documentazione di MariaDB.
optimizer_use_condition_selectivity
Selezionare le statistiche utilizzate dall'ottimizzatore. Da 1 a 5. Consulta la documentazione di MariaDB.
4 per 10.4 e versioni successive

Configurazione di più utenti del database

In alternativa, è possibile impostare più utenti con autorizzazioni diverse per accedere al database main.

Per impostazione predefinita, un endpoint denominato mysql dispone dell'accesso di amministratore al database. Per impostare più utenti del database, è necessario definire più endpoint nel file services.yaml e dichiarare le relazioni nel file .magento.app.yaml. Per gli ambienti di staging e produzione Pro, Invia un ticket di supporto Adobe Commerce per richiedere l'utente aggiuntivo.

Utilizza un array nidificato per definire gli endpoint per l’accesso utente specifico. Ogni endpoint può designare l'accesso a uno o più schemi (database) e livelli di autorizzazione diversi per ciascuno di essi.

I livelli di autorizzazione validi sono:

  • ro: sono consentite solo le query SELECT.
  • rw: le query SELECT e le query INSERT, UPDATE e DELETE sono consentite.
  • admin: tutte le query sono consentite, incluse le query DDL (CREATE TABLE, DROP TABLE e altre).

Ad esempio:

mysql:
    type: mysql:10.4
    disk: 5120
    configuration:
        schemas:
            - main
        endpoints:
            admin:
                default_schema: main
                privileges:
                    main: admin
            reporter:
                privileges:
                    main: ro
            importer:
                privileges:
                    main: rw
        properties:
            optimizer_switch: "rowid_filter=off"
            optimizer_use_condition_selectivity: 1

Nell'esempio precedente, l'endpoint admin fornisce l'accesso a livello di amministratore al database main, l'endpoint reporter fornisce l'accesso in sola lettura e l'endpoint importer fornisce l'accesso in lettura/scrittura, ovvero:

  • L'utente admin ha il controllo completo del database.
  • L'utente reporter dispone solo dei privilegi SELECT.
  • L'utente importer dispone dei privilegi SELECT, INSERT, UPDATE e DELETE.

Aggiungere gli endpoint definiti nell'esempio precedente alla proprietà relationships del file .magento.app.yaml. Ad esempio:

relationships:
    database: "mysql:admin"
    databasereporter: "mysql:reporter"
    databaseimporter: "mysql:importer"
NOTE
Se si configura un utente MySQL, non è possibile utilizzare il meccanismo di controllo dell'accesso DEFINER per le stored procedure e le visualizzazioni.

Connettersi al database

Per accedere direttamente al database MariaDB è necessario utilizzare un SSH per accedere all'ambiente Cloud remoto e connettersi al database.

  1. Utilizza SSH per accedere all’ambiente remoto.

    code language-bash
    magento-cloud ssh
    
  2. Recuperare le credenziali di accesso MySQL dalle proprietà database e type nella variabile $MAGENTO_CLOUD_RELATIONSHIPS.

    code language-bash
    echo $MAGENTO_CLOUD_RELATIONSHIPS | base64 -d | json_pp
    

    o

    code language-bash
    php -r 'print_r(json_decode(base64_decode($_ENV["MAGENTO_CLOUD_RELATIONSHIPS"])));'
    

    Nella risposta, trovare le informazioni MySQL. Ad esempio:

    code language-json
    "database" : [
       {
          "password" : "",
          "rel" : "mysql",
          "hostname" : "nnnnnnnn.mysql.service._.magentosite.cloud",
          "service" : "mysql",
          "host" : "database.internal",
          "ip" : "###.###.###.###",
          "port" : 3306,
          "path" : "main",
          "cluster" : "projectid-integration-id",
          "query" : {
             "is_master" : true
          },
          "type" : "mysql:10.3",
          "username" : "user",
          "scheme" : "mysql"
       }
    ],
    
  3. Connettersi al database.

    • Per iniziare, utilizzare il comando seguente:

      code language-bash
      mysql -h database.internal -u <username>
      
    • Per Pro, utilizzare il comando seguente con nome host, numero di porta, nome utente e password recuperati dalla variabile $MAGENTO_CLOUD_RELATIONSHIPS.

      code language-bash
      mysql -h <hostname> -P <number> -u <username> -p'<password>'
      
TIP
È possibile utilizzare il comando magento-cloud db:sql per connettersi al database remoto ed eseguire i comandi SQL.

Connetti al database secondario

IMPORTANT
Questa funzione è disponibile solo nei cluster Pro Production e Staging.

A volte è necessario connettersi al database secondario per migliorare le prestazioni del database o risolvere i problemi di blocco del database. Se questa configurazione è necessaria, utilizzare "port" : 3304 per stabilire la connessione. Consulta l'argomento Best practice per configurare la connessione slave MySQL nella Guida alle best practice per l'implementazione.

Risoluzione dei problemi

Consulta i seguenti articoli di supporto Adobe Commerce per assistenza nella risoluzione dei problemi di MySQL:

recommendation-more-help
05f2f56e-ac5d-4931-8cdb-764e60e16f26