Konfigurera tjänsten MySQL
Tjänsten mysql
ger beständig datalagring baserat på MariaDB, version 10.2 till 10.4, som stöder XtraDB -lagringsmotorn och återimplementerade funktioner från MySQL 5.6 och 5.7.
Omindexering av MariaDB 10.4 tar längre tid jämfört med andra versioner av MariaDB eller MySQL. Se Indexerare i guiden Bästa metoder för prestanda.
Använd följande instruktioner för tjänstkonfiguration i Pro Integration-miljöer och Starter-miljöer, inklusive grenen master
.
Så här aktiverar du MySQL:
-
Lägg till önskat namn, typ och diskvärde (i MB) i filen
.magento/services.yaml
.code language-yaml mysql: type: mysql:<version> disk: 5120
note tip TIP MySQL-fel, till exempel PDO Exception: MySQL server has gone away
, kan inträffa på grund av otillräckligt diskutrymme. Kontrollera att du har allokerat tillräckligt med diskutrymme till tjänsten i filen.magento/services.yaml
. -
Konfigurera relationerna i filen
.magento.app.yaml
.code language-yaml relationships: database: "mysql:mysql"
-
Lägg till, implementera och push-överföra kodändringar.
code language-bash git add .magento/services.yaml .magento.app.yaml && git commit -m "Enable mysql service" && git push origin <branch-name>
services.yaml
och .magento.app.yaml
. Mer information om hur du uppgraderar eller nedgraderar en tjänst finns i Ändra tjänstversion.Konfigurera MySQL-databas
Du har följande alternativ när du konfigurerar MySQL-databasen:
schemas
- Ett schema definierar en databas. Standardschemat ärmain
-databasen.endpoints
- Varje slutpunkt representerar en autentiseringsuppgift med specifik behörighet. Standardslutpunkten ärmysql
, som haradmin
åtkomst till databasenmain
.properties
- Egenskaper används för att definiera ytterligare databaskonfigurationer.
Följande är en grundläggande exempelkonfiguration i filen .magento/services.yaml
:
mysql:
type: mysql:10.4
disk: 5120
configuration:
properties:
optimizer_switch: "rowid_filter=off"
optimizer_use_condition_selectivity: 1
properties
i exemplet ovan ändrar standardinställningarna för optimizer
enligt rekommendationerna i guidenför bästa prestanda.
MariaDB-konfigurationsalternativ:
default_charset
default_collation
max_allowed_packet
1
till 100
.optimizer_switch
optimizer_use_condition_selectivity
Konfigurera flera databasanvändare
Du kan också konfigurera flera användare med olika behörigheter för åtkomst till databasen main
.
Som standard finns det en slutpunkt med namnet mysql
som har administratörsåtkomst till databasen. Om du vill konfigurera flera databasanvändare måste du definiera flera slutpunkter i filen services.yaml
och deklarera relationerna i filen .magento.app.yaml
. För Pro Staging- och Production-miljöer skickar du en Adobe Commerce Support-biljett för att begära ytterligare användare.
Använd en kapslad array för att definiera slutpunkterna för specifik användaråtkomst. Varje slutpunkt kan ange åtkomst till ett eller flera scheman (databaser) och olika behörighetsnivåer för varje.
Giltiga behörighetsnivåer är:
ro
: Endast SELECT-frågor tillåts.rw
: SELECT-frågor och INSERT-, UPDATE- och DELETE-frågor tillåts.admin
: Alla frågor tillåts, inklusive DDL-frågor (CREATE TABLE, DROP TABLE med flera).
Exempel:
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
I föregående exempel ger slutpunkten admin
administratörsnivååtkomst till databasen main
, slutpunkten reporter
skrivskyddad åtkomst och slutpunkten importer
ger skrivskyddad åtkomst, vilket innebär:
- Användaren
admin
har fullständig kontroll över databasen. - Användaren
reporter
har endast SELECT-behörighet. - Användaren
importer
har behörigheterna SELECT, INSERT, UPDATE och DELETE.
Lägg till de slutpunkter som definieras i exemplet ovan till egenskapen relationships
för filen .magento.app.yaml
. Exempel:
relationships:
database: "mysql:admin"
databasereporter: "mysql:reporter"
databaseimporter: "mysql:importer"
DEFINER
för lagrade procedurer och vyer.Anslut till databasen
Om du vill komma åt MariaDB-databasen direkt måste du använda en SSH för att logga in i fjärrmolnmiljön och ansluta till databasen.
-
Använd SSH för att logga in i fjärrmiljön.
code language-bash magento-cloud ssh
-
Hämta inloggningsuppgifterna för MySQL från egenskaperna
database
ochtype
i variabeln $MAGENTO_CLOUD_RELATIONSHIPS.code language-bash echo $MAGENTO_CLOUD_RELATIONSHIPS | base64 -d | json_pp
eller
code language-bash php -r 'print_r(json_decode(base64_decode($_ENV["MAGENTO_CLOUD_RELATIONSHIPS"])));'
Leta reda på MySQL-informationen i svaret. Exempel:
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" } ],
-
Anslut till databasen.
-
Använd följande kommando för Starter:
code language-bash mysql -h database.internal -u <username>
-
För Pro använder du följande kommando med värdnamn, portnummer, användarnamn och lösenord som hämtats från variabeln
$MAGENTO_CLOUD_RELATIONSHIPS
.code language-bash mysql -h <hostname> -P <number> -u <username> -p'<password>'
-
magento-cloud db:sql
för att ansluta till fjärrdatabasen och köra SQL-kommandon.Anslut till sekundär databas
Ibland måste du ansluta till den sekundära databasen för att förbättra databasprestanda eller lösa problem med låsning av databaser. Om den här konfigurationen krävs använder du "port" : 3304
för att upprätta anslutningen. Se Bästa praxis för att konfigurera MySQL-slavanslutningen i guiden Bästa praxis för implementering.
Felsökning
Se följande Adobe Commerce supportartiklar för hjälp med felsökning av MySQL-problem: