Allgemeine MySQL-Richtlinien

Siehe Systemanforderungen für unterstützte MySQL-Versionen.

Adobe stark empfiehlt bei der Einrichtung der Datenbank die Einhaltung des folgenden Standards:

  • Adobe Commerce verwendet MySQL-Datenbank-Trigger , um den Datenbankzugriff während der Neuindizierung zu verbessern. Diese werden erstellt, wenn der Indexmodus auf Zeitplan. Das Programm unterstützt keine benutzerdefinierten Trigger in der Datenbank, da benutzerdefinierte Trigger Inkompatibilitäten mit zukünftigen Adobe Commerce-Versionen verursachen können.
  • Machen Sie sich mit Diese möglichen Einschränkungen für MySQL Trigger bevor Sie fortfahren.
  • Aktivieren Sie zur Erhöhung der Datenbanksicherheit die STRICT_ALL_TABLES SQL-Modus, um zu verhindern, dass ungültige Datenwerte gespeichert werden, was zu unerwünschten Datenbankinteraktionen führen kann.
  • Adobe Commerce not Unterstützung der auf MySQL-Anweisungen basierenden Replikation. Stellen Sie sicher, dass Sie only row-basierte Replikation.
WARNING
Adobe Commerce verwendet derzeit CREATE TEMPORARY TABLE Anweisungen innerhalb von Transaktionen, die inkompatibel bei Datenbankimplementierungen die GTID-basierte Replikation verwenden, z. B. Instanzen der zweiten Generation von Google Cloud SQL. Betrachten Sie als Alternative MySQL für Cloud SQL 8.0.
NOTE
Wenn sich Ihr Webserver und Ihr Datenbankserver auf unterschiedlichen Hosts befinden, führen Sie die in diesem Thema beschriebenen Aufgaben auf dem Datenbankserverhost aus. Informationen dazu finden Sie unter Eine Remote-Verbindung zur MySQL-Datenbank einrichten.

Installieren von MySQL auf Ubuntu

Für Adobe Commerce 2.4 ist eine saubere Installation von MySQL 8.0 erforderlich. Folgen Sie den unten stehenden Links, um Anweisungen zur Installation von MySQL auf Ihrem Computer zu erhalten.

Wenn Sie mit dem Import einer großen Anzahl von Produkten rechnen, können Sie den Wert für max_allowed_packet größer als der Standardwert ist, 16 MB.

NOTE
Der Standardwert gilt für Adobe Commerce in der Cloud-Infrastruktur. und Projekte vor Ort. Kunden von Adobe Commerce on Cloud Infrastructure Pro müssen ein Support-Ticket öffnen, um die max_allowed_packet -Wert. Kunden von Adobe Commerce on Cloud Infrastructure Starter können den Wert erhöhen, indem sie die Konfiguration in /etc/mysql/mysql.cnf -Datei.

Um den Wert zu erhöhen, öffnen Sie die /etc/mysql/mysql.cnf in einem Texteditor und suchen Sie nach dem Wert für max_allowed_packet. Speichern Sie Ihre Änderungen in der mysql.cnf -Datei, schließen Sie den Texteditor und starten Sie MySQL neu (service mysql restart).

Geben Sie den folgenden Befehl an einer mysql> Eingabeaufforderung:

SHOW VARIABLES LIKE 'max_allowed_packet';

Dann Datenbankinstanz konfigurieren.

MySQL 8-Änderungen

Für Adobe Commerce 2.4 wurde Unterstützung für MySQL 8 hinzugefügt.
In diesem Abschnitt werden wichtige Änderungen an MySQL 8 beschrieben, die Entwickler kennen sollten.

Die Breite für ganzzahlige Typen wurde entfernt (Umrandung)

Die Spezifikation der Anzeigebreite für ganzzahlige Datentypen (TINYINT, SMALLINT, MEDIUMINT, INT, BIGINT) ist in MySQL 8.0.17 nicht mehr enthalten. Anweisungen, die Datentypdefinitionen in ihrer Ausgabe enthalten, zeigen die Anzeigebreite für ganzzahlige Typen nicht mehr an, mit Ausnahme von TINYINT(1). MySQL Connectors gehen davon aus, dass die TINYINT(1)-Spalten als BOOLEAN-Spalten stammen. Diese Ausnahme ermöglicht es ihnen, diese Annahme fortzusetzen.

Beispiel

Beschreiben Sie admin_user unter mysql 8.19

Feld
Typ
Null
Schlüssel
Standard
Extra
user_id
int unsigned
NO
PRI
NULL
auto_increment
firstname
varchar(32)
JA
NULL
lastname
varchar(32)
JA
NULL
email
varchar(128)
JA
NULL
username
varchar(40)
JA
UNI
NULL
password
varchar(255)
NO
NULL
created
timestamp
NO
CURRENT_TIMESTAMP
DEFAULT_GENERATED
modified
timestamp
NO
CURRENT_TIMESTAMP
DEFAULT_GENERATED bei Aktualisierung CURRENT_TIMESTAMP
logdate
timestamp
JA
NULL
lognum
smallint unsigned
NO
0

Außer für TINYINT(1), sollten alle Ganzzahlabstände (TINYINT > 1, SMALLINT, MEDIUMINT, INT, BIGINT) aus dem db_schema.xml -Datei.

Weitere Informationen finden Sie unter https://dev.mysql.com/doc/relnotes/mysql/8.0/en/news-8-0-19.html#mysqld-8-0-19-feature.

Standardreihenfolge nach Verhalten

Vor 8.0 wurden Einträge nach Fremdschlüssel sortiert. Die standardmäßige Sortierreihenfolge hängt von der verwendeten Engine ab.
Geben Sie immer eine Sortierreihenfolge an, wenn Ihr Code von einer bestimmten Sortierung abhängig ist.

Veraltete ASC- und DESC-Qualifikatoren für GRUPPE BY

Ab MySQL 8.0.13 wird die veraltete ASC oder DESC Qualifikatoren für GROUP BY -Klauseln entfernt. Abfragen, die zuvor verwendet wurden GROUP BY -Sortierung kann zu Ergebnissen führen, die sich von früheren MySQL-Versionen unterscheiden. Um eine bestimmte Sortierreihenfolge zu erstellen, geben Sie eine ORDER BY -Klausel.

Commerce und MySQL 8

Es wurden einige Änderungen an Adobe Commerce vorgenommen, um MySQL 8 ordnungsgemäß zu unterstützen.

Verhalten bei Abfrage und Einfügen

Adobe Commerce hat das reguläre Validierungsverhalten deaktiviert, indem SET SQL_MODE='' in /lib/internal/Magento/Framework/DB/Adapter/Pdo/Mysql.php:424.. Wenn die Validierung deaktiviert ist, ist es möglich, dass MySQL Daten abschneidet. In MySQL hat sich das Verhalten der Abfrage geändert: Select * on my_table where IP='127.0.0.1' gibt keine Ergebnisse mehr zurück, da die IP-Adresse jetzt ordnungsgemäß als Zeichenfolge und nicht als Ganzzahl betrachtet wird.

Upgrade von MySQL 5.7 auf MySQL 8

Um MySQL ordnungsgemäß von Version 5.7 auf Version 8 zu aktualisieren, müssen Sie die folgenden Schritte ausführen, um die richtige Reihenfolge zu wählen:

  1. Aktualisieren Sie Adobe Commerce auf 2.4.0. Testen Sie alles und stellen Sie sicher, dass Ihr System wie erwartet funktioniert.

  2. Wartungsmodus aktivieren:

    code language-bash
    bin/magento maintenance:enable
    
  3. Erstellen Sie eine Datenbanksicherung:

    code language-bash
    bin/magento setup:backup --db
    
  4. Aktualisieren Sie MySQL auf Version 8.

  5. Importieren Sie die gesicherten Daten in MySQL.

  6. Cache leeren:

    code language-bash
    bin/magento cache:clean
    
  7. Wartungsmodus deaktivieren:

    code language-bash
    bin/magento maintenance:disable
    

Datenbankinstanz konfigurieren

In diesem Abschnitt wird beschrieben, wie Sie eine Datenbankinstanz für Adobe Commerce erstellen. Obwohl empfohlen wird, eine neue Datenbankinstanz zu installieren, können Sie optional Adobe Commerce mit einer vorhandenen Datenbankinstanz installieren.

Konfigurieren einer MySQL-Datenbankinstanz:

  1. Melden Sie sich bei Ihrem Datenbankserver als ein beliebiger Benutzer an.

  2. Wechseln Sie zu einer MySQL-Eingabeaufforderung:

    code language-bash
    mysql -u root -p
    
  3. MySQL eingeben root das Kennwort des Benutzers bei Aufforderung.

  4. Geben Sie die folgenden Befehle in der angezeigten Reihenfolge ein, um eine Datenbankinstanz mit dem Namen magento mit Benutzername magento:

    code language-sql
    create database magento;
    
    code language-sql
    create user 'magento'@'localhost' IDENTIFIED BY 'magento';
    
    code language-sql
    GRANT ALL ON magento.* TO 'magento'@'localhost';
    
    code language-sql
    flush privileges;
    
  5. Eingabe exit , um die Eingabeaufforderung zu beenden.

  6. Datenbank überprüfen:

    code language-bash
    mysql -u magento -p
    

    Wenn der MySQL-Monitor angezeigt wird, haben Sie die Datenbank ordnungsgemäß erstellt. Wenn ein Fehler angezeigt wird, wiederholen Sie die vorherigen Befehle.

  7. Wenn sich Ihr Webserver und Ihr Datenbankserver auf unterschiedlichen Hosts befinden, führen Sie die in diesem Thema beschriebenen Aufgaben auf dem Datenbankserverhost aus. Informationen dazu finden Sie unter Eine Remote-Verbindung zur MySQL-Datenbank einrichten.

    Es wird empfohlen, Ihre Datenbankinstanz entsprechend Ihrem Unternehmen zu konfigurieren. Beachten Sie bei der Konfiguration Ihrer Datenbank Folgendes:

    • Indexer erfordern höher tmp_table_size und max_heap_table_size Werte (z. B. 64 M). Wenn Sie die batch_size -Parameter können Sie diesen Wert zusammen mit den Einstellungen für die Tabellengröße anpassen, um die Indexleistung zu verbessern. Siehe Abschnitt Optimierungshandbuch für weitere Informationen.

    • Um eine optimale Leistung zu erzielen, stellen Sie sicher, dass alle MySQL- und Adobe Commerce-Indextabellen im Speicher aufbewahrt werden können (konfigurieren Sie beispielsweise innodb_buffer_pool_size).

    • Die Neuindizierung auf MariaDB 10.4 nimmt im Vergleich zu anderen MariaDB- oder MySQL-Versionen mehr Zeit in Anspruch. Siehe Best Practices bei der Konfiguration.

  8. Für MySQL TIMESTAMP Felder, die den Voreinstellungen und der Zusammensetzung entsprechen, die von der deklarativen Schemaarchitektur der Anwendung, der Systemvariablen, erwartet werden explicit_defaults_for_timestamp muss auf on.

    Verweise:

    Wenn diese Einstellung nicht aktiviert ist, bin/magento setup:db:status meldet immer, dass die Declarative Schema is not up to date.

NOTE
Die explicit_defaults_for_timestamp eingestellt wurde. Diese Einstellung steuert veraltete TIMESTAMP-Verhaltensweisen, die in einer zukünftigen MySQL-Version entfernt werden. Wenn diese Verhaltensweisen entfernt werden, wird die explicit_defaults_for_timestamp -Einstellung ebenfalls entfernt.
WARNING
Für Adobe Commerce bei Cloud-Infrastrukturprojekten muss die explicit_defaults_for_timestamp -Einstellung für MySQL (MariaDB) standardmäßig auf OFF.

Die Neuindizierung auf MariaDB 10.4 und 10.6 nimmt im Vergleich zu früheren MariaDB- oder MySQL-Versionen mehr Zeit in Anspruch. Um die Neuindizierung zu beschleunigen, empfehlen wir, diese MariaDB-Konfigurationsparameter festzulegen:

Wenn die Leistung nach der Aktualisierung auf MariaDB 10.6 nicht mit der Indexierung in Zusammenhang steht, sollten Sie die Option --query-cache-type -Einstellung. Beispiel: --query-cache-type=ON.

Vor der Aktualisierung von Adobe Commerce auf Cloud-Infrastrukturprojekten müssen Sie möglicherweise auch MariaDB (Weitere Informationen finden Sie unter Best Practices für die MariaDB-Aktualisierung .).

Beispiel:

  • Adobe Commerce 2.4.6 mit MariaDB-Version 10.5.1 oder höher
  • Adobe Commerce 2.3.5 mit MariaDB-Version 10.3 oder früher

Zusätzlich zu diesen Empfehlungen sollten Sie sich an Ihren Datenbankadministrator wenden, um die folgenden Parameter zu konfigurieren:

NOTE
Diese Einstellungen sind nur für lokale Bereitstellungen verfügbar. Kunden von Adobe Commerce in der Cloud-Infrastruktur haben keinen Zugriff auf diese Einstellungen.
recommendation-more-help
0f8e7db5-0e9c-4002-a5b8-a0088077d995