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.

WARNING
Var försiktig när du uppgraderar MariaDB från version 10.1 till 10.2. MariaDB 10.1 är den sista versionen som har stöd för XtraDB som lagringsmotor. MariaDB 10.2 använder InnoDB för lagringsmotorn. När du har uppgraderat från 10.1 till 10.2 kan du inte återställa ändringen. Adobe Commerce har stöd för båda lagringsmotorerna, men du måste kontrollera att tillägg och andra system som används i ditt projekt är kompatibla med MariaDB 10.2. Se Inkompatibla ändringar mellan 10.1 och 10.2.

Använd följande instruktioner för tjänstkonfiguration i Pro Integration-miljöer och Starter-miljöer, inklusive grenen master.

NOTE
Skicka en Adobe Commerce-supportanmälan om du vill ändra tjänstkonfigurationen i Pro Production- och mellanlagringsmiljöer.

Så här aktiverar du MySQL:

  1. 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.
  2. Konfigurera relationerna i filen .magento.app.yaml.

    code language-yaml
    relationships:
        database: "mysql:mysql"
    
  3. 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>
    
  4. Verifiera tjänstrelationerna.

TIP
Efter den första konfigurationen av tjänsten kan du ändra programversionen för en installerad tjänst genom att uppdatera konfigurationsfilerna för 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 är main-databasen.
  • endpoints - Varje slutpunkt representerar en autentiseringsuppgift med specifik behörighet. Standardslutpunkten är mysql, som har admin åtkomst till databasen main.
  • 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:

Alternativ
Beskrivning
Standardvärde
default_charset
Standardteckenuppsättningen.
utf8mb4
default_collation
Standardkollationen.
utf8mb4_unicode_ci
max_allowed_packet
Maximal storlek för paket, i MB. Intervall 1 till 100.
16
optimizer_switch
Ange värden för frågeoptimeraren. Se MariaDB-dokumentation.
optimizer_use_condition_selectivity
Välj den statistik som används av optimeraren. Intervall 1 till 5. Se MariaDB-dokumentation.
4 för 10.4 och senare

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"
NOTE
Om du konfigurerar en MySQL-användare kan du inte använda åtkomstkontrollsfunktionen 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.

  1. Använd SSH för att logga in i fjärrmiljön.

    code language-bash
    magento-cloud ssh
    
  2. Hämta inloggningsuppgifterna för MySQL från egenskaperna database och type 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"
       }
    ],
    
  3. 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>'
      
TIP
Du kan använda kommandot magento-cloud db:sql för att ansluta till fjärrdatabasen och köra SQL-kommandon.

Anslut till sekundär databas

IMPORTANT
Den här funktionen är endast tillgänglig i Pro Production- och Staging-kluster.

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:

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