Benutzer-Werkzeuge

Webseiten-Werkzeuge


software:middleware:datenbank

Dies ist eine alte Version des Dokuments!


Middleware-Datenbank

Für die Speicherung der Daten wird eine Datenbank eingesetzt. Da nahezu jede Datenbank dazu verwendet werden kann, wird hier beispielhaft nur die Verwendung von MySQL beschrieben. MySQL ist eine kostenlose Datenbank für viele Betriebssysteme und kann auch auf den hier interessanten Kleinstrechnern unter Linux betrieben werden.

Das Datenbankschema für den Volkszähler ist einfach. Es besteht aus fünf Tabellen:

  • data: Tabelle der Datenwerte mit Zeitstempel und Zuordnung zum Messgerät/Sensor (channel)
  • entities: Die Messgeräte und ihre ID (UUID)
  • properties: Die Bezeichnung und andere Eigenschaften der Messgeräte wie Auflösung und ob sie öffentlich auswählbar sind, oder nicht
  • entities_in_aggregator: Zuordnung der Messgeräte zu Gruppen (parent-child-Struktur)
  • aggregate: Verdichtete Datenwerte, zum schnelleren Anzeigen eines längeren Zeitraums
Das Datenbankschema wird durch das für die middleware verwendete doctrine-framework automatisch generiert!

Datenbank administrieren

Die einfachste Möglichkeit besteht darin, das ganze über die Webobefläche zu administrieren. Für den Fall des Rasperrpi ist das dann :

 "http://raspberrypi/phpmyadmin/" 

Als Benutzername/Passwort dann entwender vz/demo oder der richtige Administratorzugang (root/raspberry) der in

 /etc/mysql/debian.cnf 

steht.

Datenbank sichern

Komplettbackup mit mysqldump

Die Standardanwendung

mysqldump -uvz -pdemo volkszaehler | bzip2 >mysql_backup.bz2

Als Ziel taugt jedes gemountete Verzeichnis, vorzugsweise auf einem externe Datenträger.

Mysqldump verursacht einen sehr hohe Last bei der Datenbankanwendung und kann auf dem Raspberry den vzlogger beeinträchtigen!

mysqldump per ssh

Möchte man der SD-Karte im Rasperry unnötige Schreibzugriffe ersparen kann man auch über ssh auf einen Backuprechner sichern.

destssh0=/home/backup/`uname -n`/
destssh2=${destssh0}/`date +%Y%m%d`
mysqldump -uvz -pdemo volkszaehler --single-transaction | gzip -c | ssh root@backuprechner "cat > $destssh2.mysql_backup.gz"

Achtung: bevor das Script funktioniert, MUSS der SSH Fernzugriff ohne Passwort aktiviert sein. Ich habe hier auf die Anleitung http://mathias-kettner.de/lw_ssh_anmeldung_ohne_passwort.html zurückgegriffen.

Inkrementelles Backup mit dbcopy

Möchte man die Nachteile von mysqldump umgehen bietet sich dbcopy an.

Datenbank zurückspielen

mysql -uvz -pdemo volkszaehler < 20131124.mysql_backup

Das bezieht sich auf ein ungepacktes Backup!

Datenbank nach CSV exportieren

Um die Daten sich in Excel oder Openoffice anzusehen, ist es sinnvoll diese nach CSV zu exportieren. Dazu habe ich recht viel im Internet suchen müssen, bin aber am Ende zu folgendem Ergebnis gekommen:

#!/bin/bash

database=volkszaehler
table=data

echo 'SELECT * FROM ' ${table} | mysql -B -uvz -pdemo ${database} | gzip -c >  ${database}_${table}_`date '+%Y-%m-%d-%H%M'`.txt.gz 
software/middleware/datenbank.1514291409.txt.gz · Zuletzt geändert: 2017/12/26 13:30 von ruperts