Gestern hat es mir beim Absturz der VM (HA) die SQL DB geschrotete.
IN HA läuft zwar wieder alles aber das System hat mir eine Neue DB erstellt.
Somit sind meine Daten im Energie Dashboard weg.
(Backup ist eine Woche alt)
Fragen:
Welche Möglichkeiten und SQL Tools gibt es für HA die DB zu reparieren und die Daten des Energie Dashboards in die Neue DB zu übertragen? (z.b. via sql queries)
Die alte DB hat 750 MB die Neue 30 MB??
Ich frage mich warum so Groß? Das bisschen Energie Daten über ca. 3 Monate.
Oder was sammelt da HA für Daten?
Ich überlege mir für die Zukunft die DB Täglich zu sichern?
Oder die SQL DB in einen separaten Proxmox Container ?
Geht das ?
Ja, das geht.
Du musst dann lediglich in der configuration.yaml die Angaben zum recorder machen: db_url: mysql://username:password@192.168.178.xx:3306/database
ich möchte es nur verstehen, daher die, vielleicht dumme Frage.
Sprichst Du wirklich von einer, per Add-on installierten MariaDB oder von der Internen sqlite?
Ich kenne die Mechanismen, von HA nicht, aber ist es wirklich so, dass, nach einem Crash, HA in einer MariaDB eine neue Datenbank anlegt?
Das Verhalten kenne ich nur von der internen sqlite
Wenn, es um die sqlite geht, dann kannst Du in Deinem Verzeichnisbaum schauen, und die home_assistant_v2.db suchen, die Größere sollte ja dann die sein, die die alten Werte gespeichert hatte.
Wenn man diese Datei herunterlädt, kann man dann mittels sqlitebrowser, versuchen die alte Datenbank zu öffnen und die Daten zu exportieren und dann versuchen diese wieder zu importieren.
Das ginge z. B. mit dem Add-on
Dann und diese Information hast Du ja schon von den Vorrednern, gehört, kann man sich ja zusätzlich influxDB oder MariaDB installieren, da werden dann zusätzlich die Daten gespeichert und können dann auch in Grafana ausgewertet werden.
Falls Du das ausschließlich mit den Boardmitteln von HA machen willst dann könntest Du das per Partielles Backup machen.
Mit diesen Einstellungen wird dann der Home Assistant Ordner (/homeassistant) gesichert mit Ausschluss der Dinge die Du nicht per Haken mit aufnimmst, aber incl. der home-assistant_v2.db.
Die *.tar-Backup-Datei enthält dann die home-assistant_v2.db unter homeassistant.tar.gz → data → home-assistant_v2.db.
Eine tägliche Sicherung könntest Du dann per Automatisierung und per Dienst: Home Assistant Supervisor: Erstellt eine Teilsicherung (service: hassio.backup_partial) machen. Dort dann den standardmäßig gesetzten Haken bei Datenbank ausschließen herausnehmen.
Beispiel-Automatisierung meiner wöchentlichen Vollsicherung (service: hassio.backup_full) per Zeitplan auf einem NAS.
alias: HA NAS Autobackup 1 x Woche
description: HA NAS Autobackup 1 x Woche
trigger:
- platform: state
entity_id:
- schedule.zeitplan_backup_montag_nacht
to: "on"
condition: []
action:
- service: hassio.backup_full
metadata: {}
data:
compressed: true
location: NAS
name: >-
Vollbackup_{{ state_attr('update.home_assistant_core_update',
'installed_version') }}_{{ now().strftime("%d-%m-%Y") }}
mode: single
Falls Du bei Dir HA unter Proxmox laufen haben solltest und/oder auf eine andere Datenbank wechseln wolltest, hättest Du natürlich noch ganz andere Möglichkeiten für eine Sicherung der DB.
Aber bitte vorher den Recoder stoppen und dann erst eine Sicherung Erstellung.
Eine db im laufenden Betrieb zu sicheren, endet in meisten fällen mit einer korrupten db.
Falls sich das auf das Code-Beispiel beziehen sollte: Da in dem Fall der hassio.backup Service dafür genutzt wird ist ein stoppen des Recorders per recorder.disable nicht notwendig, da dies die Backup-Funktion von HA automatisch macht.
D.h. die Automatisierung macht in dem Fall nichts anderes als wenn man über Einstellungen → System → Backup dort per
ein Backup manuell erstellt. Zumindest ich habe noch nie etwas davon gehört oder gelesen das man den Recorder stoppen müsste, sofern man den hassio.backup Service nutzt. Auch ist weder in der HA Doku zu Backup, noch dort bei dem Beispiel-Code für eine Automatisierung, die Rede davon.
doch, denn das ist ja nicht nur die Datenbank zur Speicherung der historisierten Daten, sondern auch der Zustände usw.
Das Datenbankschema sieht in etwa so aus
➜ homeassistant git:(main) ✗ ls -lh
-rw-r--r-- 1 root root 2.6G Mar 31 18:51 home-assistant_v2.db
Wenn Du sie kleinhalten willst, dann musst Du Dich mal mit dem prune beschäftigen und/oder mit den records alles exclud(en) und nur das includ(en) das Du wirklich gespeichert haben willst.
Lange, aber in reduzierte Auflösung, links vom Pfeil, reduziert, rechts volle Auflösung.
Auch wenn Du auf mariaDB umsteigst, hast Du das Problem, dass sie Dir anwächst, also auch da ist prune und/oder sinnvolle records zu beachten.
VG
Bernd
Versuch mal ein Backup, dann das .tar oder zip file herunterladen und schauen ob es da mit drin ist.
Wenn Du in HA KleinWeich Shares einbindest, dann kannst du das auch gleich dorthin sichern.
P.S.: ich mache das in einer reinen Linux Umgebung so:
➜ config git:(main) ✗ scp -p home-assistant_v2.db dp20eic@ryzen-5:/tmp
The authenticity of host 'ryzen-5 (192.168.178.42)' can't be established.
ED25519 key fingerprint is SHA256:+Hbm8H+wc3tgG26zZLv+pFwCcc1D7Bdy6LVQHL9fxPM.
This key is not known by any other names.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added 'ryzen-5' (ED25519) to the list of known hosts.
dp20eic@ryzen-5's password:
home-assistant_v2.db
Zur Nutzung in HA, können Dir sicherlich andere mehr helfen, ich mache von meinen Datenbanken nur Backups, der LX Container.
Vielleicht mal noch ein Dump, wenn ich spielen will.
Wöchentlich auf dem Proxmox Backup Server.
Dabei stoppe ich den LXC, wenn das Backup ausgeführt wird.
Wenn MariaDB als LXC losgelöst von Home Assistant läuft, bringt Dir ein Home Assistant Backup ja herzlichst wenig, wenn es um die dB geht.