mdzio / ccu-historian

Der CCU-Historian erfasst die Betriebsdaten des Hausautomations-Systems HomeMatic der Firma eQ-3.
http://www.ccu-historian.de
GNU General Public License v3.0
121 stars 14 forks source link

Database corrupted #430

Closed Uinsart closed 4 days ago

Uinsart commented 4 days ago

Describe the bug

Hallo! Heute hat mein CCU-Historian, der in einem docker compose container läuft, plötzlich aufgehört, Daten zu speichern. Im Webinterface war folgende Meldung: File corrupted while reading record: "/database/history.mv.db". Possible solution: use the recovery tool [90030-214]

Ich wollte ein Datenbankexport von vor ein paar Tagen, als es noch defintiv funktioniert hat, importieren. Das gab mir: FEHLER: Ungültige Importdatei (Zeile 1).

Ich weiß leider nicht, wie ich das recovery-tool innerhalb des Docker Containers ausführen kann Ich kann auch plötzlich nicht mehr auf die Datenbank per Online-Zugriff zugreifen. Der Port gibt mir einen Timeout.

Ich wäre sehr dankbar für hilfe :)

Docker compose file

services:
  app:
    image: docker.io/xjokay/ccu-historian:latest
    volumes:
      - /data/ccu_historian/database:/database
      - /data/ccu_historian/config:/opt/ccu-historian/config
    ports:
      - 7568:80
      - 2098:2098
      - 2099:2099
      - 8082:8082
      - 9092:9092
      - 5435:5435
    environment:
      - TZ=Europe/Berlin
      - CONFIG_HOST_BINRPCPORT=2099
      - CONFIG_HOST_XMLRPCPORT=2098
    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.ccu-historian.rule=Host(`historian.home`)"
      - "traefik.http.routers.ccu-historian.entrypoints=web"
    networks:
      - traefik_31_default
    restart: unless-stopped

networks:
  traefik_31_default: # This is your external traefik network
    external: true

ccu-historian.config devices.historianAddress='10.0.10.3' //IP webServer.historianAddress='10.0.10.3' database.password='******************************' //Datenbank Passwort logSystem.fileLevel=Level.INFO //Log-Level database.webAllowOthers=true //Zugriff auf die Datenbank von außen database.webEnable=true //Zugriff auf die Datenbank database.dir='/database' //Verzeichnis der Datenbank devices.device1.username='Alex' //CCU-Username devices.device1.password='****************************' //CCU-Passwort devices.device1.address='10.0.20.10' //IP der CCU devices.device1.type=CCU3 //CCU-Type historian.defaultDisabled=true //Neue Einträge standardmäßig nicht loggen historian.defaultHidden=true //Neue EInträge standardmäßig verstecken logSystem.fileName='/database/logs/ccu-historian-%g.log' //Speicherort der Logs database.pgEnable=true //PostgreSQL Zugriff database.pgPort=5435 //PostgreSQL-Port database.pgAllowOthers=true //PostgreSQL-Zugriff erlauben database.backup='/database/backups/db_%Y-%M-%D.zip' //Autopmatische Backups jeden Tag um Mitternacht devices.device1.watchdogProgram='Überwachung Historian' //Warnung auf der CCU wenn Historian ausfällt devices.device1.watchdogCycle=600000 //Rufe Programm alle 10 Minuten auf historian.bufferTime=60*1000 //Einträge nur alle 1 Minuten in DB schreiben webServer.showLastValue=true //Die aktuellen Werte der Datenpunkte inkl. Zeitstempel zusätzlich in der Datenpunktliste anzeigen

Additional context

Error log: 2024-11-24 10:22:41|INFO |Connecting to database 2024-11-24 10:22:41|SEVERE |Error updating data point storage 2024-11-24 10:22:41|SEVERE |Exception: File corrupted while reading record: "/database/history.mv.db". Possible solution: use the recovery tool [90030-214] 2024-11-24 10:22:41|SEVERE |Detail: org.h2.jdbc.JdbcSQLNonTransientConnectionException: File corrupted while reading record: "/database/history.mv.db". Possible solution: use the recovery tool [90030-214] at org.h2.message.DbException.getJdbcSQLException(DbException.java:678) at org.h2.message.DbException.getJdbcSQLException(DbException.java:477) at org.h2.message.DbException.get(DbException.java:212) at org.h2.mvstore.db.Store.convertMVStoreException(Store.java:166) at org.h2.mvstore.db.Store.<init>(Store.java:145) at org.h2.engine.Database.<init>(Database.java:324) at org.h2.engine.Engine.openSession(Engine.java:92) at org.h2.engine.Engine.openSession(Engine.java:222) at org.h2.engine.Engine.createSession(Engine.java:201) at org.h2.engine.SessionRemote.connectEmbeddedOrServer(SessionRemote.java:338) at org.h2.jdbc.JdbcConnection.<init>(JdbcConnection.java:122) at org.h2.Driver.connect(Driver.java:59) at mdz.ccuhistorian.Database.connect(Database.groovy:71) at mdz.ccuhistorian.Database.getDataPoint(Database.groovy:353) at mdz.ccuhistorian.ExtendedStorage.getDataPoint(ExtendedStorage.groovy:64) at mdz.ccuhistorian.eventprocessing.DataPointStorageUpdater.consume(DataPointStorageUpdater.groovy:45) at mdz.ccuhistorian.eventprocessing.DataPointStorageUpdater.consume(DataPointStorageUpdater.groovy) at mdz.eventprocessing.BasicProducer.lambda$0(BasicProducer.java:36) at mdz.Exceptions.catchToLog(Exceptions.java:74) at mdz.eventprocessing.BasicProducer.safeProduce(BasicProducer.java:36) at mdz.eventprocessing.BasicProducer.produce(BasicProducer.java:42) at mdz.eventprocessing.Buffer.purge(Buffer.java:74) at mdz.ccuhistorian.Historian$_closure2.doCall(Historian.groovy:91) at mdz.ccuhistorian.Historian$_closure2.doCall(Historian.groovy) at mdz.ccuhistorian.ExtendedStorage$_fireOnRead_closure1.doCall(ExtendedStorage.groovy:163) at mdz.ccuhistorian.ExtendedStorage.fireOnRead(ExtendedStorage.groovy:163) at mdz.ccuhistorian.ExtendedStorage.getDataPointsOfInterface(ExtendedStorage.groovy:53) at mdz.ccuhistorian.Historian.update(Historian.groovy:152) at mdz.ccuhistorian.Historian$_run_closure3$_closure12.doCall(Historian.groovy:110) at mdz.ccuhistorian.Historian$_run_closure3$_closure12.doCall(Historian.groovy) at mdz.Exceptions.lambda$0(Exceptions.java:84) at mdz.Exceptions.catchToLog(Exceptions.java:74) at mdz.Exceptions.catchToLog(Exceptions.java:84) at mdz.ccuhistorian.Historian$_run_closure3.doCall(Historian.groovy:106) at mdz.ccuhistorian.Historian.run(Historian.groovy:105) Caused by: org.h2.mvstore.MVStoreException: Double mark: 1b32/1ca [2-4a, 72-5bc, 5ca-88d, 959-ccf, fc4-1606, 1ce9-3958, 3b0a-43c0, 4719-] [2.1.214/6] at org.h2.mvstore.DataUtils.newMVStoreException(DataUtils.java:1004) at org.h2.mvstore.FreeSpaceBitSet.markUsed(FreeSpaceBitSet.java:184) at org.h2.mvstore.FileStore.markUsed(FileStore.java:344) at org.h2.mvstore.MVStore.readStoreHeader(MVStore.java:1052) at org.h2.mvstore.MVStore.<init>(MVStore.java:463) at org.h2.mvstore.MVStore$Builder.open(MVStore.java:4082) at org.h2.mvstore.db.Store.<init>(Store.java:136)

jokay commented 4 days ago

Relates https://github.com/jokay/docker-ccu-historian/issues/449.

Uinsart commented 4 days ago

Ich hab die DB jetzt kurzerhand gelöscht und aus einen Backup wiederhergestellt. Danke euch trotzdem für den Aufwand!