MySQL-service instellen

De mysql dienst verstrekt blijvende gegevensopslag die op wordt gebaseerd MariaDBversies 10.2 tot 10.4, ondersteunend de XtraDBopslagmotor en heropgezette eigenschappen van MySQL 5.6 en 5.7.

Het opnieuw indexeren op MariaDB 10.4 neemt meer tijd in vergelijking met andere versies MariaDB of MySQL. Zie Indexersin de Beste praktijken van Prestaties gids.

WARNING
Wees voorzichtig wanneer het bevorderen van MariaDB van versie 10.1 tot 10.2. MariaDB 10.1 is de laatste versie die XtraDB als opslagmotor steunt. MariaDB 10.2 gebruikt InnoDB voor de opslagmotor. Nadat u van 10.1 aan 10.2 bevordert, kunt u niet de verandering terugdraaien. Adobe Commerce ondersteunt beide opslagengines. U moet echter wel de extensies en andere systemen controleren die door uw project worden gebruikt om te controleren of deze compatibel zijn met MariaDB 10.2. Zie Incompatibele Veranderingen tussen 10.1 en 10.2.

Gebruik de volgende instructies voor de dienstopstelling op de milieu's van de Integratie Pro en van de Starter milieu's, met inbegrip van de master tak.

NOTE
leg een kaartje van de Steun van Adobe Commercevoor om de de dienstconfiguratie op ProProductie en het Opvoeren milieu's te veranderen.

om MySQL toe te laten:

  1. Voeg de vereiste naam, het type en de schijfwaarde (in MB) toe aan het .magento/services.yaml -bestand.

    code language-yaml
    mysql:
        type: mysql:<version>
        disk: 5120
    
    note tip
    TIP
    MySQL-fouten, zoals PDO Exception: MySQL server has gone away , kunnen optreden als er onvoldoende schijfruimte is. Controleer of u voldoende schijfruimte hebt toegewezen aan de service in het .magento/services.yaml -bestand.
  2. Configureer de relaties in het .magento.app.yaml -bestand.

    code language-yaml
    relationships:
        database: "mysql:mysql"
    
  3. U kunt wijzigingen in de code toevoegen, doorvoeren en doorvoeren.

    code language-bash
    git add .magento/services.yaml .magento.app.yaml && git commit -m "Enable mysql service" && git push origin <branch-name>
    
  4. verifieer de de dienstverhoudingen.

TIP
Nadat u de service hebt ingesteld, kunt u de softwareversie van een geïnstalleerde service wijzigen door de configuratiebestanden van services.yaml en .magento.app.yaml bij te werken. Zie de dienstversie van de Veranderingvoor begeleiding bij de bevordering of het degraderen van de dienst.

MySQL-database configureren

U hebt de volgende opties wanneer het vormen van het gegevensbestand MySQL:

  • schemas - Een schema definieert een database. Het standaardschema is de main -database.
  • endpoints - Elk eindpunt vertegenwoordigt een referentie met specifieke bevoegdheden. Het standaardeindpunt is mysql , dat admin toegang heeft tot de main -database.
  • properties - De eigenschappen worden gebruikt om extra gegevensbestandconfiguraties te bepalen.

Hieronder volgt een eenvoudige voorbeeldconfiguratie in het .magento/services.yaml -bestand:

mysql:
    type: mysql:10.4
    disk: 5120
    configuration:
        properties:
            optimizer_switch: "rowid_filter=off"
            optimizer_use_condition_selectivity: 1

properties in het bovenstaande voorbeeld wijzigt de standaard optimizer montages zoals geadviseerd in de gids van Beste praktijken van Prestaties.

MariaDB configuratieopties:

Opties
Beschrijving
Standaardwaarde
default_charset
De standaardtekenset.
utf8mb4
default_collation
De standaardsortering.
utf8mb4_unicode_ci
max_allowed_packet
Maximale grootte voor pakketten, in MB. Bereik 1 tot 100 .
16
optimizer_switch
Stel waarden in voor de functie voor query-optimalisatie. Zie {de documentatie van 0} MariaDB 🔗.
optimizer_use_condition_selectivity
Selecteer de statistieken die door optimizer worden gebruikt. Bereik 1 tot 5 . Zie {de documentatie van 0} MariaDB 🔗.
4 voor 10.4 en hoger

Meerdere databasegebruikers instellen

U kunt desgewenst meerdere gebruikers instellen met verschillende machtigingen voor toegang tot de main -database.

Standaard is er één eindpunt met de naam mysql dat beheerderstoegang tot de database heeft. Als u meerdere databasegebruikers wilt instellen, moet u meerdere eindpunten in het services.yaml -bestand definiëren en de relaties in het .magento.app.yaml -bestand declareren. Voor Pro het Opvoeren en de milieu's van de Productie, voorleggen een kaartje van de Steun van Adobe Commerceom de extra gebruiker te verzoeken.

Gebruik een geneste array om de eindpunten voor specifieke gebruikerstoegang te definiëren. Elk eindpunt kan toegang tot één of meerdere schema's (gegevensbestanden) en verschillende niveaus van toestemming op elk aanwijzen.

De geldige machtigingsniveaus zijn:

  • ro: alleen SELECT-query's zijn toegestaan.
  • rw: query's SELECT en query's INSERT, UPDATE en DELETE zijn toegestaan.
  • admin: Alle vragen zijn toegestaan, met inbegrip van vragen DDL (CREATE LIJST, DROP LIJST, en meer).

Bijvoorbeeld:

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

In het vorige voorbeeld biedt het eindpunt admin beheerderniveau toegang tot de database main , biedt het eindpunt reporter alleen-lezen toegang en het eindpunt importer biedt alleen-lezen toegang, wat betekent:

  • De gebruiker van admin heeft volledige controle over de database.
  • De gebruiker reporter heeft alleen SELECT-rechten.
  • De gebruiker van importer heeft SELECT, INSERT, UPDATE, en DELETE voorrechten.

Voeg de eindpunten die in het bovenstaande voorbeeld worden gedefinieerd, toe aan de eigenschap relationships van het .magento.app.yaml -bestand. Bijvoorbeeld:

relationships:
    database: "mysql:admin"
    databasereporter: "mysql:reporter"
    databaseimporter: "mysql:importer"
NOTE
Als u één gebruiker MySQL vormt, kunt u niet het DEFINERtoegangsbeheermechanisme voor opgeslagen procedures en meningen gebruiken.

Verbinding maken met de database

Als u rechtstreeks toegang wilt krijgen tot de MariaDB-database, moet u een SSH gebruiken om u aan te melden bij de externe Cloud-omgeving en verbinding te maken met de database.

  1. Gebruik SSH om u aan te melden bij de externe omgeving.

    code language-bash
    magento-cloud ssh
    
  2. Haal de MySQL login geloofsbrieven van de database en type eigenschappen in de $MAGENTO_CLOUD_RELATIONSHIPSvariabele terug.

    code language-bash
    echo $MAGENTO_CLOUD_RELATIONSHIPS | base64 -d | json_pp
    

    of

    code language-bash
    php -r 'print_r(json_decode(base64_decode($_ENV["MAGENTO_CLOUD_RELATIONSHIPS"])));'
    

    In de reactie, vind de informatie MySQL. Bijvoorbeeld:

    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. Maak verbinding met de database.

    • Gebruik voor Starter de volgende opdracht:

      code language-bash
      mysql -h database.internal -u <username>
      
    • Gebruik voor Pro de volgende opdracht met hostnaam, poortnummer, gebruikersnaam en wachtwoord uit de variabele $MAGENTO_CLOUD_RELATIONSHIPS .

      code language-bash
      mysql -h <hostname> -P <number> -u <username> -p'<password>'
      
TIP
Met de opdracht magento-cloud db:sql kunt u verbinding maken met de externe database en SQL-opdrachten uitvoeren.

Verbinding maken met secundaire database

IMPORTANT
Deze functie is alleen beschikbaar voor Pro Production- en Staging-clusters.

Soms, moet u met het secundaire gegevensbestand verbinden om gegevensbestandprestaties te verbeteren of gegevensbestand het sluiten kwesties op te lossen. Als deze configuratie vereist is, gebruikt u "port" : 3304 om de verbinding tot stand te brengen. Zie Beste praktijken om het MySQL slave verbindingsonderwerp in de gids van de Beste praktijken van de Implementatie te vormen.

Problemen oplossen

Raadpleeg de volgende Adobe Commerce Support-artikelen voor hulp bij het oplossen van MySQL-problemen:

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