Beheben eines Datenbankwiederherstellungsfehlers: ERROR 1105 (HY000) - Maximale Größe des Writesets auf Adobe Commerce Cloud überschritten

Beim Wiederherstellen eines MariaDB-Backups auf einem Galera-Cluster kann der Fehler Maximale Writeset-Größe überschritten aufgrund einer Transaktionsgrößenbeschränkung von 2 GB auftreten. Dieser Artikel bietet eine Schritt-für-Schritt-Lösung zur Anpassung der Sicherungs- und Wiederherstellungsbefehle für die Verarbeitung größerer Transaktionen, um einen erfolgreichen Wiederherstellungsprozess sicherzustellen.

Beschreibung description

Umgebung

Adobe Commerce Cloud

Dieses Problem tritt in einer MariaDB Galera-Cluster-Umgebung auf.

Problem/Symptome

Beim Versuch, ein MariaDB-Datenbankbackup auf einem Galera-Cluster wiederherzustellen, kann der Prozess mit dem folgenden Fehler fehlschlagen:

ERROR 1105 (HY000) bei Zeile [ spezifischen Zeilennummer] : Maximale Größe des Writesets überschritten

Ursache

Die Systemvariable wsrep_max_ws_size des Galera-Clusters legt eine maximale Größe für den WriteSet von 2 GB fest. Wenn ein Backup große Zeilen oder Binärdaten enthält, die diese Größe überschreiten, schlägt der Wiederherstellungsprozess fehl.

Auflösung resolution

Um dieses Problem zu beheben, passen Sie den Backup-Prozess an, um große Transaktionen zu verhindern, indem Sie die --max_allowed_packet erhöhen. Dadurch kann der MySQL-Server größere Zeilen oder Binärdaten sowohl bei Sicherungs- als auch bei Wiederherstellungsvorgängen verarbeiten. Denken Sie daran, immer in einer Nicht-Produktionsumgebung zu testen.

  1. Identifizieren Sie die genaue Fehlerursache in den MySQL-Fehlerprotokollen. Suchen Sie nach Nachrichten, die ähnlich sind wie:

    ERROR 1105 (HY000) bei Zeile [ spezifischen Zeilennummer] : Maximale Größe des Writesets überschritten

    Dies bestätigt, dass der Fehler darauf zurückzuführen ist, dass die Transaktionsgröße das Limit von Galera überschreitet.

  2. Erstellen Sie ein neues Backup, das den --max_allowed_packet angibt, um größere Datengrößen zu ermöglichen und übergroße Transaktionen zu verhindern. The --max_allowed_packet Parameter definiert die maximale Größe von Datenpaketen, die der Server während der Kommunikation mit einem Client verarbeiten kann. Eine Erhöhung dieser Größe hilft bei der Verarbeitung größerer Zeilen oder Objekte, was eine Transaktionsteilung und übergroße Writesets verhindert. Für die meisten Szenarien ist --max_allowed_packet=64M ausreichend. Passen Sie diesen Wert auf —max_allowed_package=128M an, wenn Ihre Datenbank sehr große Zeilen oder Binärdaten enthält. Verwenden Sie außerdem eine Komprimierung (z. B. gzip), um die Dateigröße zu reduzieren.
    Beispiel für einen Backup-Befehl:

    code language-none
    mysqldump -h <host> -u <username> -p <password> --single-transaction --max_allowed_packet=64M <db_name> | gzip > /tmp/<dump_name>.sql.gz
    
  3. Geben Sie beim Wiederherstellen des Backups einen erhöhten --max_allowed_packet an, um die Kompatibilität mit dem geänderten Backup sicherzustellen.
    Beispiel für einen Wiederherstellungsbefehl:

    zcat /tmp/<dump_name>.sql.gz | sed -e 's/DEFINER[ ] *=[ ] *[ *] *\*/\*/' | mysql --host=127.0.0.1 -u <username> -p <password>

  4. Bestätigen Sie nach der Wiederherstellung des Backups, dass der Vorgang fehlerfrei abgeschlossen wurde. Überprüfen Sie die Protokolle, um sicherzustellen, dass keine Warnungen oder Anomalien vorhanden sind.

Verwandtes Lesen

wsrep_max_ws_size in Galera-Cluster-Systemvariablen in der MariaDB-Dokumentation.

recommendation-more-help
3d58f420-19b5-47a0-a122-5c9dab55ec7f