DbLog: Konflikt mit Datenbank-Backup?

Begonnen von CountAlmasy, 25 Januar 2015, 12:05:27

Vorheriges Thema - Nächstes Thema

CountAlmasy

Hallo,

ich nutze DbLog, um alle Events in eine MySQL-Datenbank auf dem gleichen Rechner (Ubuntu Server 14.04) zu schreiben:

define MySqlDbLog DbLog /etc/fhem_db.conf .*:.*

Ich benutze automysqlbackup, um die gesamte Datenbank (die noch andere Schemata enthält) automatisiert täglich zu sichern. Gestern bin ich bei der Analyse der Datenbank-Backup-Dateien (zufällig) darauf gestoßen, dass über einen Zeitraum von ca. zwei Tagen gar keine Daten aufgezeichnet wurden. Zwischen dem 22.1., 22:34 Uhr und dem 24.1., 19:30 Uhr sind weder in der current- noch in der history-Tabelle Datensätze erstellt worden (normal sind bei mir 20.000 bis 30.000 Datensätze pro Tag).

Die Wiederaufnahme der Aufzeichnungen am 24.1. kann ich eindeutig mit einem "rereadcfg" bzw. "shutdown restart" in Verbindung bringen. Aber es mir ist unklar, warum die Datenbankaufzeichnung am 22.1. abgebrochen ist. In der zentralen Log-Datei finden sich keinerlei Auffälligkeiten, d.h. keine Hinweise auf einen Fehler mit der Datenbankverbindung oder einen Neustart. Die (wenigen verbliebenen) FileLogs haben in dem betroffenen Zeitraum einwandfrei protokolliert.

Aufgefallen ist mir allerdings, dass am 22.1. um 22:35 Uhr das tägliche Backup des fhem-Datenbankschemas erstellt worden ist. Kann es sein, dass es zu Konflikten beim parallelen Zugriff auf die Datenbank gekommen ist, die Datenbankverbindung dadurch unterbrochen und nicht wiederhergestellt worden ist? Hat jemand dieses Phänomen schon einmal beobachtet?

Ich werde das weiter beobachten und ggf. einen "Watchdog" einbauen, der nach dem täglichen Backup prüft, ob die Datenbankverbindung noch besteht. Oder hat jemand eine bessere Idee?

betateilchen

Zitat von: CountAlmasy am 25 Januar 2015, 12:05:27
Oder hat jemand eine bessere Idee?

Nach dem Backup ein automatisiertes "set <DbLog> reopen" ausführen.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

CountAlmasy

Hallo betateilchen,

prima Idee, vielen Dank! Ich habe jetzt zunächst einmal den entsprechenden Timer gesetzt, um nicht unbemerkt Daten zu verlieren, werde aber weiter beobachten, ob das Problem häufiger auftritt.

define ReopenDbConnection at *23:15:00 set MySqlDbLog reopen