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.
Utilizzare le istruzioni seguenti per la configurazione del servizio negli ambienti di integrazione Pro e negli ambienti Starter, incluso il ramo master.
Per abilitare MySQL:
-
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: 5120note 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. -
Configurare le relazioni nel file
.magento.app.yaml.code language-yaml relationships: database: "mysql:mysql" -
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>
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 databasemain.endpoints- Ogni endpoint rappresenta una credenziale con privilegi specifici. L'endpoint predefinito èmysql, che ha accessoadminal databasemain.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:
default_charsetdefault_collationmax_allowed_packet1 a 100.optimizer_switchoptimizer_use_condition_selectivity1 a 5. Consulta la documentazione di MariaDB.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
adminha il controllo completo del database. - L'utente
reporterdispone solo dei privilegi SELECT. - L'utente
importerdispone 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"
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.
-
Utilizza SSH per accedere all’ambiente remoto.
code language-bash magento-cloud ssh -
Recuperare le credenziali di accesso MySQL dalle proprietà
databaseetypenella variabile $MAGENTO_CLOUD_RELATIONSHIPS.code language-bash echo $MAGENTO_CLOUD_RELATIONSHIPS | base64 -d | json_ppo
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" } ], -
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>'
-
magento-cloud db:sql per connettersi al database remoto ed eseguire i comandi SQL.Connetti al database secondario
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: