MySQL-Dienst einrichten
Der mysql
-Dienst bietet eine beständige Datenspeicherung basierend auf den MariaDB-Versionen 10.2 bis 10.4, die die XtraDB -Speichermodul unterstützt und Funktionen von MySQL 5.6 und 5.7 neu implementiert.
Die Neuindizierung auf MariaDB 10.4 nimmt im Vergleich zu anderen MariaDB- oder MySQL-Versionen mehr Zeit in Anspruch. Siehe Indexer im Handbuch Best Practices für die Leistung.
Verwenden Sie die folgenden Anweisungen für die Diensteinrichtung in Pro Integration-Umgebungen und Starter-Umgebungen, einschließlich der Verzweigung master
.
So aktivieren Sie MySQL:
-
Fügen Sie der Datei
.magento/services.yaml
den erforderlichen Namen, Typ und Festplattenwert (in MB) 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 auf ungenügenden Speicherplatz zurückzuführen sein. Vergewissern Sie sich, dass Sie dem Dienst in der Datei.magento/services.yaml
ausreichend Speicherplatz zugewiesen haben. -
Konfigurieren Sie die Beziehungen in der Datei "
.magento.app.yaml
".code language-yaml relationships: database: "mysql:mysql"
-
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>
services.yaml
und .magento.app.yaml
aktualisieren. Eine Anleitung zum Aktualisieren oder Herunterstufen eines Dienstes finden Sie unter Dienstversion ändern .MySQL-Datenbank konfigurieren
Sie haben beim Konfigurieren der MySQL-Datenbank die folgenden Optionen:
schemas
- Ein Schema definiert eine Datenbank. Das Standardschema ist diemain
-Datenbank.endpoints
: Jeder Endpunkt stellt eine Berechtigung mit bestimmten Berechtigungen dar. Der standardmäßige Endpunkt istmysql
, deradmin
Zugriff auf diemain
-Datenbank hat.properties
—Eigenschaften werden verwendet, um zusätzliche Datenbankkonfigurationen zu definieren.
Im Folgenden finden Sie eine grundlegende Beispielkonfiguration in der Datei .magento/services.yaml
:
mysql:
type: mysql:10.4
disk: 5120
configuration:
properties:
optimizer_switch: "rowid_filter=off"
optimizer_use_condition_selectivity: 1
Mit dem Wert properties
im obigen Beispiel werden die standardmäßigen optimizer
-Einstellungen wie im Leitfaden zu Leistungsempfehlungen 🔗 empfohlen geändert.
MariaDB-Konfigurationsoptionen:
default_charset
default_collation
max_allowed_packet
1
bis 100
.optimizer_switch
optimizer_use_condition_selectivity
1
bis 5
. Siehe MariaDB-Dokumentation.Mehrere Datenbankbenutzer einrichten
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 Datei services.yaml
definieren und die Beziehungen in der Datei .magento.app.yaml
deklarieren. Senden Sie für Pro-Staging- und Produktionsumgebungen ein Adobe Commerce-Support-Ticket🔗 , 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 vorherigen Beispiel bietet der Endpunkt admin
Zugriff auf die Datenbank auf Administratorebene, der Endpunkt reporter
bietet schreibgeschützten Zugriff und der Endpunkt importer
bietet Lese- und Schreibzugriff, d. h.:main
- Der Benutzer
admin
hat die volle Kontrolle über die Datenbank. - Der Benutzer
reporter
verfügt nur über SELECT-Berechtigungen. - Der Benutzer
importer
verfügt über die Berechtigungen SELECT, INSERT, UPDATE und DELETE.
Fügen Sie die im obigen Beispiel definierten Endpunkte zur Eigenschaft relationships
der Datei .magento.app.yaml
hinzu. Beispiel:
relationships:
database: "mysql:admin"
databasereporter: "mysql:reporter"
databaseimporter: "mysql:importer"
DEFINER
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.
-
Verwenden Sie SSH, um sich bei der Remote-Umgebung anzumelden.
code language-bash magento-cloud ssh
-
Rufen Sie die Anmeldedaten für MySQL aus den Eigenschaften
database
undtype
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 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 der Variable "
$MAGENTO_CLOUD_RELATIONSHIPS
"abgerufen werden.code language-bash mysql -h <hostname> -P <number> -u <username> -p'<password>'
-
magento-cloud db:sql
können Sie eine Verbindung zur Remote-Datenbank herstellen und SQL-Befehle ausführen.Verbindung zur sekundären Datenbank herstellen
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. Weitere Informationen finden Sie unter dem Thema Best Practices zum Konfigurieren der MySQL-Slave-Verbindung im Handbuch Best Practices für die Implementierung .
Fehlerbehebung
In den folgenden Adobe Commerce-Supportartikeln finden Sie Hilfe zur Fehlerbehebung bei MySQL-Problemen: