Datenbanksicherung - HeinrichKnauf/Icecreaminventory-Doku GitHub Wiki

Manuelle Sicherung

Aktuell (21.4.2020) kann die Sicherung nur manuell erfolgen. Gesichert wird die Datei /home/pi/h2ice.mv.db

Zur Sicherung wird das Raspi heruntergefahren, die Speicherkarte entnommen, und Datei /home/pi/h2ice.mv.db auf einen Linuxrechner kopiert = gesichert. Danach das Raspi und die Eiscremesoftware neu starten

Bitte bei jeder durchgeführten Sicherung den Nachweis über manuelle Sicherungen führen.

Konzept für die automatische Sicherung

  • Zur Sicherung während der Laufzeit wird eine WLAN-Verbindung zum Raspi hergestellt.
  • Das produktive Raspi ist bereits mit einem eingeschalteten WLAN-Adapter ausgestattet. Der Netzwerkname ist sprechend und das Gerät lässt sich so leicht finden.
  • Ein weiterer Linux-Rechner wird mit einem WLAN-Empfänger ausgestattet und mit dem Raspi verbunden.
  • Bei jedem Start (also in der Regel täglich) fragt dieser Linux-Rechner die aktuelle Datenbank am Raspi ab und legt lokal eine Sicherung ab. Mherere Möglichkeiten hierzu:
  • Vorschlag 1 für diese Datenbankabfrage: Über eine zu implementierende REST-Abfrage am Icecreaminventory-Backend. Diese Abfrage wird JSON oder HTML Daten zurückliefern, also keine Binärkopie der h2ice.mv.db. Für das Restore ist daher eine deckungsgleiche REST-Funktion zu implementieren.
  • Vorschlag 2 für diese Datenabfrage: Eine Sicherung auf Dateiebene über ftp, SCP, ... Fraglich ist, ob ein fehlerfreier und transaktionssicherer Lesezugriff auf die Datenbankdatei möglich ist, während das Backend läuft.
  • Vorschlag 3 für diese Datenabfrage: Das Raspi erzeugt lokal eine Kopie der Datenbankdatei, regelmäßig spät abends selbsttätig per cron, und diese Datei wird dann von remote wiederum per ftp oder scp gelesen, diesmal garantiert transaktionssicher. Die lokale Kopie der Datenbank kann möglicherweise über ein Kommando an die h2-Datenbank oder an das Backend angefordert werden, oder das Exportieren wird ohne cron direkt im Backend implementiert.
  • Vorschlag 4 für die Sicherung: Speichern auf einen USB-Speicher, der anhand seiner Kennung(1234-abcde) identifiziert wird. Sobald der eingeschoben wird, wird die Datenbank/Backend angehalten, der aktuelle Eis-Stand auf die Karte gesichert, und die Datenbank/das Frontend wieder gestartet.