mir hat ein Stromausfall die Historian-DB zerschossen und ich habe eines der automatischen täglichen Backups eingespielt.
Leider musste ich dabei feststellen, dass das letzte fehlerfreie Backup am 2023-05-08 erstellt wurde und ab dem 2023-05-09 nur mehr defekte Backups erstellt wurden.
Kennt das jemand, hat jemand eine Idee?
Ein paar Details zum Überblick:
Das erste Backup am 2021-08-11 war ca. 30 MB groß.
Das letzte fehlerfreie Backup vom 2023-05-08 war bereits ca. 400 MB gross und hat alle Daten ab Installation 2021-08-10 umfasste.
Aber ab 2023-05-09 begann die Dateigröße wieder bei nur ca. 40 MB, um seither bis 2024-02-05 auf ca. 52 MB anzuwachsen.
Leider sind die Backups ab 2023-05-09 alle fehlerhaft, es kommt nach Einspielen beim Starten des CCU-Historian im Log laufend die schwere Ausnahme wie unten codiert, und das ca. 3-4x pro Sekunde, womit der CCU-Historian praktisch nicht mehr aufgerufen werden kann.
Den Datenverlust kann ich verschmerzen und lasse jetzt mal das fehlerfreie Backup vom 2023-05-09 laufen, in der Hoffnung, dass ich jetzt wieder ein sauberes System habe und der Fehler nicht schon damals drin steckte. Notfalls gäbe es davor auch tägliche Backups.
Aber was kann die Ursache gewesen sein?
Wie könnte ich den Fehler finden bzw. einer Wiederholung vorbeugen?
Am System habe ich - glaube ich - schon lange nichts verändert. Es läuft die Raspberrymatic 3.59.6.20211009 mit einem CCU-Historian 2.9.0, CUxD 2.8 und sonst nichts auffälliges auf einer Charly RP3. Die DB und die Backups liegen auf einem 64GB-USB-Stick mit EXT4, die DB selbst war vor dem Crash 9 GB groß, die neu eingespielte ist 400MB gross, am USB-Stick sind ca. 20 GB frei. Die Backups sind zwar im üblichen lesbares SQL geschrieben, aber egal ob 40 MB oder 400 MB, es ist viel zu viel für eine händische Fehlersuche. Grob durchgeblättert schauen alle Backups plausibel aus, der Fehler muss also irgendwo im Detail stecken.
Code: Alles auswählen
2024-02-06 18:11:09|INFO |Connecting to database
2024-02-06 18:11:09|INFO |Stopping database
2024-02-06 18:11:09|SEVERE |Error updating data point storage
2024-02-06 18:11:09|SEVERE |Exception: Table "DATA_POINTS" already exists; SQL statement:
CREATE TABLE DATA_POINTS (
DP_ID INT IDENTITY, TABLE_NAME VARCHAR NOT NULL,
STATE INT,
INTERFACE VARCHAR NOT NULL, ADDRESS VARCHAR NOT NULL,
IDENTIFIER VARCHAR NOT NULL,
PREPROC_TYPE INT, PREPROC_PARAM DOUBLE,
DISPLAY_NAME VARCHAR, ROOM VARCHAR, FUNCTION VARCHAR, COMMENT VARCHAR,
CUSTOM VARCHAR DEFAULT '{}',
PARAM_SET VARCHAR, TAB_ORDER INT,
MAXIMUM DOUBLE, UNIT VARCHAR,
MINIMUM DOUBLE, CONTROL VARCHAR,
OPERATIONS INT, FLAGS INT,
TYPE VARCHAR, DEFAULT_VALUE DOUBLE
); [42101-199]
2024-02-06 18:11:09|SEVERE |Detail: org.h2.jdbc.JdbcSQLSyntaxErrorException: Table "DATA_POINTS" already exists; SQL statement:
CREATE TABLE DATA_POINTS (
DP_ID INT IDENTITY, TABLE_NAME VARCHAR NOT NULL,
STATE INT,
INTERFACE VARCHAR NOT NULL, ADDRESS VARCHAR NOT NULL,
IDENTIFIER VARCHAR NOT NULL,
PREPROC_TYPE INT, PREPROC_PARAM DOUBLE,
DISPLAY_NAME VARCHAR, ROOM VARCHAR, FUNCTION VARCHAR, COMMENT VARCHAR,
CUSTOM VARCHAR DEFAULT '{}',
PARAM_SET VARCHAR, TAB_ORDER INT,
MAXIMUM DOUBLE, UNIT VARCHAR,
MINIMUM DOUBLE, CONTROL VARCHAR,
OPERATIONS INT, FLAGS INT,
TYPE VARCHAR, DEFAULT_VALUE DOUBLE
); [42101-199]
Norfolk