Datenbankupdate Problem lösen (HA 2024.08.x)

Wenn ihr genauso wie ich Probleme habt, eure MariaDB mit der Version 2024.08 auf das neue Schema 45 zu aktualisieren, dann habe ich hier die Lösung für euch. Diese Lösung ist sehr einfach zu nutzen, wenn ihr mit dem System HASS arbeitet – sprich die „All-in-one Lösung“ von Home Assistant arbeitet. Nutzt ihr Docker, könnt ihr die Lösung aber sicherlich auf eure Gegebenheiten adaptieren.

Das Problem zeigt sich darin, dass folgende Meldung einfach nicht weggeht und scheinbar nach einigen Stunden wieder bei „0 Stunden“ von vorne anfängt. (Von vorne anfängt bedeutet aber, dass Home Assistant neu bootet, da es auf einen Fehler läuft.)

Das Problem liegt darin, dass die Arbeitsspeicher-Zuordnung der MariaDB nicht ausreichend groß dimensoniert ist für das Update. Dies könnt ihr jedoch mit einem einfachen Trick (temporär) ändern.

Als erstes müsst ihr das MariaDB Addon einmal neustarten, um die Migrationsprozess abzubrechen.

Anschließend nutzt ihr das Addon phpMyAdmin um euch mit eurer MariaDB zu verbinden.

Dort gebt ihr im Bereich SQL den folgenden Befehlt ein und drückt unten auf OK.

SET GLOBAL innodb_buffer_pool_size = (2*1024*1024*1024);

Dies sieht dann so aus:

In den Logs des MariaDB-Addons findet ihr dazu dann auch das Ergebnis.

Anschließend startet ihr Home Assistant einmal neu und das Datenbankschema Update beginnt von Neuem.

Über phpMyAdmin könnt ihr euch über die Funktion ’show processlist‘ den aktuellen Stand (in%) anzeigen lassen.

Irgendwann erhaltet ihr dann folgende Meldung – in meinem Fall nach knapp 13 Stunden:

Um zu schauen, ob das Update nun erfolgreich war (unabhängig von der Erfolgreich-Meldung in HA), könnt ih im phpMyAdmin auch den folgenden Befehl eingeben:

use homeassistant;
desc states;

Das Ergebnis sollte dann wie folgt aussehen. Der Typ sollte nicht int sondern bigint sein.

Hinweis: Sollte das Update erneut nicht klappen, habt ihr vielleicht zu viel Speicher zugewiesen. Wiederholt dann die Prozedur aber nutzt dann ‚SET GLOBAL innodb_buffer_pool_size = (1*1024*1024*1024);‘ für nur 1GB Speicher.

Mein Datenbankvergleich sah dann übrigens so aus. Vorher:

Nachher:


Kommentare

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert