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: 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
. -
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 accessoadmin
al 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_charset
default_collation
max_allowed_packet
1
a 100
.optimizer_switch
optimizer_use_condition_selectivity
1
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
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"
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à
database
etype
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" } ],
-
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: