MySQL-Dienst einrichten

Die mysql -Dienst bietet persistente Datenspeicherung basierend auf MariaDB Versionen 10.2 bis 10.4, die die XtraDB Speicher-Engine und neu implementierte Funktionen von MySQL 5.6 und 5.7.

Die Neuindizierung auf MariaDB 10.4 nimmt im Vergleich zu anderen MariaDB- oder MySQL-Versionen mehr Zeit in Anspruch. Siehe Indexer im Best Practices für die Leistung Handbuch.

WARNING
Gehen Sie beim Aktualisieren von MariaDB von Version 10.1 auf Version 10.2 vorsichtig vor. MariaDB 10.1 ist die letzte Version, die unterstützt XtraDB als Speicher-Engine. MariaDB 10.2 verwendet InnoDB für die Speicher-Engine. Nach dem Upgrade von 10.1 auf 10.2 können Sie die Änderung nicht zurücksetzen. Adobe Commerce unterstützt beide Speicher-Engines. Sie müssen jedoch Erweiterungen und andere von Ihrem Projekt verwendete Systeme überprüfen, um sicherzustellen, dass sie mit MariaDB 10.2 kompatibel sind. Siehe Inkompatible Änderungen zwischen 10.1 und 10.2.

Verwenden Sie die folgenden Anweisungen für die Diensteinrichtung in Pro Integration-Umgebungen und Starter-Umgebungen, einschließlich der master -Verzweigung.

NOTE
Senden eines Adobe Commerce-Support-Tickets , um die Dienstkonfiguration in Pro Produktions- und Staging-Umgebungen zu ändern.

Aktivieren von MySQL:

  1. Fügen Sie den erforderlichen Namen, Typ und Festplattenwert (in MB) zum .magento/services.yaml -Datei.

    code language-yaml
    mysql:
        type: mysql:<version>
        disk: 5120
    
    note tip
    TIP
    MySQL-Fehler, z. B. PDO Exception: MySQL server has gone away, kann durch unzureichenden Festplattenspeicher auftreten. Vergewissern Sie sich, dass Sie dem Dienst im .magento/services.yaml -Datei.
  2. Konfigurieren Sie die Beziehungen im .magento.app.yaml -Datei.

    code language-yaml
    relationships:
        database: "mysql:mysql"
    
  3. Fügen Sie Code-Änderungen hinzu, übertragen Sie sie und übertragen Sie sie.

    code language-bash
    git add .magento/services.yaml .magento.app.yaml && git commit -m "Enable mysql service" && git push origin <branch-name>
    
  4. Überprüfen der Dienstbeziehungen.

TIP
Nach der Ersteinrichtung des Dienstes können Sie die Softwareversion für einen installierten Dienst ändern, indem Sie die services.yaml und .magento.app.yaml Konfigurationsdateien. Siehe Dienstversion ändern für Anleitungen zum Upgrade oder Downgrade eines Dienstes.

MySQL-Datenbank konfigurieren

Sie haben beim Konfigurieren der MySQL-Datenbank die folgenden Optionen:

  • schemas—Ein Schema definiert eine Datenbank. Das Standardschema ist das main Datenbank.
  • endpoints—Jeder Endpunkt stellt eine Berechtigung mit bestimmten Berechtigungen dar. Der standardmäßige Endpunkt lautet mysql, die admin Zugang zu main Datenbank.
  • properties—Eigenschaften werden verwendet, um zusätzliche Datenbankkonfigurationen zu definieren.

Im Folgenden finden Sie eine grundlegende Beispielkonfiguration in der .magento/services.yaml Datei:

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

Die properties im obigen Beispiel ändert die Standardeinstellung optimizer Einstellungen als empfohlen im Leitfaden zu Leistungsempfehlungen.

MariaDB-Konfigurationsoptionen:

Optionen
Beschreibung
Standardwert
default_charset
Der Standardzeichensatz.
utf8mb4
default_collation
Die Standardsortierung.
utf8mb4_unicode_ci
max_allowed_packet
Maximale Größe für Pakete in MB. Bereich 1 nach 100.
16
optimizer_switch
Legen Sie Werte für den Abfrageoptimierer fest. Siehe MariaDB-Dokumentation.
optimizer_use_condition_selectivity
Wählen Sie die vom Optimierer verwendeten Statistiken aus. Bereich 1 nach 5. Siehe MariaDB-Dokumentation.
4 für 10.4 und höher

Mehrere Datenbankbenutzer einrichten

Optional können Sie mehrere Benutzer mit unterschiedlichen Berechtigungen für den Zugriff auf die main Datenbank.

Standardmäßig gibt es einen Endpunkt mit dem Namen mysql , der Administratorzugriff auf die Datenbank hat. Um mehrere Datenbankbenutzer einzurichten, müssen Sie mehrere Endpunkte im services.yaml und deklarieren Sie die Beziehungen in der .magento.app.yaml -Datei. Für Staging- und Produktionsumgebungen pro Anwender, Senden eines Adobe Commerce-Support-Tickets , um den zusätzlichen Benutzer anzufordern.

Verwenden Sie ein verschachteltes Array, um die Endpunkte für den spezifischen Benutzerzugriff zu definieren. Jeder Endpunkt kann den Zugriff auf ein oder mehrere Schemas (Datenbanken) und verschiedene Berechtigungsstufen für jedes einzelne Schema angeben.

Gültige Berechtigungsstufen sind:

  • ro: Nur SELECT-Abfragen sind zulässig.
  • rw: SELECT-Abfragen und INSERT-, UPDATE- und DELETE-Abfragen sind zulässig.
  • admin: Alle Abfragen sind zulässig, einschließlich DDL-Abfragen (CREATE TABLE, DROP TABLE usw.).

Beispiel:

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

Im obigen Beispiel wird die admin Endpunkt bietet Administratorzugriff auf die main Datenbank, reporter -Endpunkt bietet schreibgeschützten Zugriff und die importer Endpunkt bietet Lese- und Schreibzugriff, d. h.:

  • Die admin Der Benutzer hat die volle Kontrolle über die Datenbank.
  • Die reporter Der Benutzer verfügt nur über SELECT-Berechtigungen.
  • Die importer Der Benutzer verfügt über die Berechtigungen SELECT, INSERT, UPDATE und DELETE.

Fügen Sie die im obigen Beispiel definierten Endpunkte zum relationships -Eigenschaft der .magento.app.yaml -Datei. Beispiel:

relationships:
    database: "mysql:admin"
    databasereporter: "mysql:reporter"
    databaseimporter: "mysql:importer"
NOTE
Wenn Sie einen MySQL-Benutzer konfigurieren, können Sie die DEFINER Zugriffskontrollmechanismus für gespeicherte Verfahren und Ansichten.

Verbindung zur Datenbank herstellen

Für den direkten Zugriff auf die MariaDB-Datenbank müssen Sie eine SSH verwenden, um sich bei der Remote-Cloud-Umgebung anzumelden und eine Verbindung zur Datenbank herzustellen.

  1. Verwenden Sie SSH, um sich bei der Remote-Umgebung anzumelden.

    code language-bash
    magento-cloud ssh
    
  2. Rufen Sie die MySQL-Anmeldedaten aus dem database und type -Eigenschaften in $MAGENTO_CLOUD_RELATIONSHIPS -Variable.

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

    oder

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

    Suchen Sie in der Antwort die MySQL-Informationen. Beispiel:

    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. Stellen Sie eine Verbindung zur Datenbank her.

    • Verwenden Sie für Starter den folgenden Befehl:

      code language-bash
      mysql -h database.internal -u <username>
      
    • Verwenden Sie für Pro den folgenden Befehl mit Hostname, Portnummer, Benutzername und Kennwort, die aus dem $MAGENTO_CLOUD_RELATIONSHIPS -Variable.

      code language-bash
      mysql -h <hostname> -P <number> -u <username> -p'<password>'
      
TIP
Sie können die magento-cloud db:sql -Befehl, um eine Verbindung zur Remote-Datenbank herzustellen und SQL-Befehle auszuführen.

Verbindung zur sekundären Datenbank herstellen

IMPORTANT
Diese Funktion ist nur für Pro Production- und Staging-Cluster verfügbar.

Manchmal müssen Sie eine Verbindung zur sekundären Datenbank herstellen, um die Datenbankleistung zu verbessern oder Probleme mit der Datenbanksperrung zu beheben. Wenn diese Konfiguration erforderlich ist, verwenden Sie "port" : 3304 um die Verbindung herzustellen. Siehe Best Practice zum Konfigurieren der MySQL-Slave-Verbindung Thema im Best Practices für die Implementierung Handbuch.

Fehlerbehebung

In den folgenden Adobe Commerce-Supportartikeln finden Sie Hilfe zur Fehlerbehebung bei MySQL-Problemen:

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