Einrichten des MySQL-Service
Der mysql
-Service bietet eine persistente Datenspeicherung basierend auf den MariaDB-Versionen 10.2 bis 10.4, unterstützt die XtraDB-Speicher-Engine und implementierte Funktionen aus MySQL 5.6 und 5.7.
Die Neuindizierung auf MariaDB 10.4 dauert im Vergleich zu anderen MariaDB- oder MySQL-Versionen länger. Siehe Indexer im Handbuch Best Practices für die".
Verwenden Sie die folgenden Anweisungen für die Einrichtung des Services in Pro Integration-Umgebungen und Starter-Umgebungen, einschließlich der master
.
So aktivieren Sie MySQL:
-
Fügen Sie den erforderlichen Namen, den erforderlichen Typ und den erforderlichen Datenträgerwert (in MB) zur
.magento/services.yaml
hinzu.code language-yaml mysql: type: mysql:<version> disk: 5120
note tip TIP MySQL-Fehler, wie z. B. PDO Exception: MySQL server has gone away
, können aufgrund von ungenügendem Speicherplatz auftreten. Stellen Sie sicher, dass dem Service in der.magento/services.yaml
genügend Speicherplatz zugewiesen wurde. -
Konfigurieren Sie die Beziehungen in der
.magento.app.yaml
.code language-yaml relationships: database: "mysql:mysql"
-
Code-Änderungen hinzufügen, übertragen und per Push übertragen.
code language-bash git add .magento/services.yaml .magento.app.yaml && git commit -m "Enable mysql service" && git push origin <branch-name>
services.yaml
und .magento.app.yaml
Konfigurationsdateien aktualisieren. Unter Ändern der Service-Version finden Sie Anleitungen zum Aktualisieren oder Herunterstufen eines Services.MySQL-Datenbank konfigurieren
Sie haben beim Konfigurieren der MySQL-Datenbank die folgenden Optionen:
schemas
- Ein Schema definiert eine Datenbank. Das Standardschema ist diemain
.endpoints
- Jeder Endpunkt stellt eine Berechtigung mit bestimmten Berechtigungen dar. Der standardmäßige Endpunkt istmysql
, deradmin
Zugriff auf diemain
-Datenbank hat.properties
- Eigenschaften werden zum Definieren zusätzlicher Datenbankkonfigurationen verwendet.
Im Folgenden finden Sie eine einfache Beispielkonfiguration in der .magento/services.yaml
:
mysql:
type: mysql:10.4
disk: 5120
configuration:
properties:
optimizer_switch: "rowid_filter=off"
optimizer_use_condition_selectivity: 1
Mit dem properties
im obigen Beispiel werden die standardmäßigen optimizer
wie im Handbuch für Best Practices für die Leistung.
MariaDB-Konfigurationsoptionen:
default_charset
default_collation
max_allowed_packet
1
bis 100
.optimizer_switch
optimizer_use_condition_selectivity
1
bis 5
. Siehe MariaDB-Dokumentation.Einrichten mehrerer Datenbankbenutzer
Optional können Sie mehrere Benutzer mit unterschiedlichen Berechtigungen für den Zugriff auf die main
-Datenbank einrichten.
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 in der services.yaml
definieren und die Beziehungen in der .magento.app.yaml
deklarieren. Für Pro-Staging- und Produktionsumgebungen Senden Sie ein Adobe Commerce-Support-Ticket, um den zusätzlichen Benutzer anzufordern.
Verwenden Sie ein verschachteltes -Array, um die Endpunkte für einen bestimmten Benutzerzugriff zu definieren. Jeder Endpunkt kann Zugriff auf ein oder mehrere Schemas (Datenbanken) und verschiedene Berechtigungsebenen für jedes Schema zuweisen.
Die gültigen Berechtigungsebenen 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 und mehr).
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 vorherigen Beispiel bietet der admin
-Endpunkt Zugriff auf die main
-Datenbank auf Admin-Ebene, der reporter
-Endpunkt nur Lesezugriff und der importer
-Endpunkt Lese-/Schreibzugriff, was bedeutet:
- Der
admin
hat die volle Kontrolle über die Datenbank. - Der
reporter
Benutzer hat nur SELECT-Berechtigungen. - Der
importer
hat die Berechtigungen SELECT, INSERT, UPDATE und DELETE.
Fügen Sie die im obigen Beispiel definierten Endpunkte zur relationships
der .magento.app.yaml
hinzu. Beispiel:
relationships:
database: "mysql:admin"
databasereporter: "mysql:reporter"
databaseimporter: "mysql:importer"
DEFINER
Zugriffskontrollmechanismus nicht für gespeicherte Prozeduren und Ansichten verwenden.Verbindung zur Datenbank herstellen
Für den direkten Zugriff auf die MariaDB-Datenbank müssen Sie ein SSH verwenden, um sich bei der Remote-Cloud-Umgebung anzumelden und eine Verbindung zur Datenbank herzustellen.
-
Verwenden Sie SSH, um sich bei der Remote-Umgebung anzumelden.
code language-bash magento-cloud ssh
-
Rufen Sie die MySQL-Anmeldedaten aus den
database
- undtype
-Eigenschaften in der Variablen $MAGENTO_CLOUD_RELATIONSHIPS ab.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" } ],
-
Stellen Sie eine Verbindung zur Datenbank her.
-
Verwenden Sie zunächst den folgenden Befehl:
code language-bash mysql -h database.internal -u <username>
-
Für Pro verwenden Sie den folgenden Befehl mit Host-Namen, Port-Nummer, Benutzername und Kennwort, die aus der
$MAGENTO_CLOUD_RELATIONSHIPS
-Variablen abgerufen wurden.code language-bash mysql -h <hostname> -P <number> -u <username> -p'<password>'
-
magento-cloud db:sql
-Befehl verwenden, um eine Verbindung zur Remote-Datenbank herzustellen und SQL-Befehle auszuführen.Verbindung mit sekundärer Datenbank herstellen
Manchmal müssen Sie eine Verbindung zur sekundären Datenbank herstellen, um die Datenbankleistung zu verbessern oder Probleme mit der Datenbanksperre zu beheben. Wenn diese Konfiguration erforderlich ist, verwenden Sie "port" : 3304
, um die Verbindung herzustellen. Siehe das Thema Best Practice zur Konfiguration der MySQL-SlaveVerbindung im Implementierungs-Best-Practices Handbuch.
Fehlerbehebung
In den folgenden Adobe Commerce-Support-Artikeln finden Sie Hilfe bei der Fehlerbehebung bei MySQL-Problemen: