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: 5120note 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 guiden för bästa prestanda.
MariaDB-konfigurationsalternativ:
default_charsetdefault_collationmax_allowed_packet1 till 100.optimizer_switchoptimizer_use_condition_selectivityKonfigurera 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
adminhar fullständig kontroll över databasen. - Användaren
reporterhar endast SELECT-behörighet. - Användaren
importerhar 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
databaseochtypei variabeln $MAGENTO_CLOUD_RELATIONSHIPS.code language-bash echo $MAGENTO_CLOUD_RELATIONSHIPS | base64 -d | json_ppeller
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: