Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. ioBroker Allgemein
    4. Sql-Adapter und meherer ioBroker Installationen

    NEWS

    • Wir empfehlen: Node.js 22.x

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker goes Matter ... Matter Adapter in Stable

    Sql-Adapter und meherer ioBroker Installationen

    This topic has been deleted. Only users with topic management privileges can see it.
    • M
      MrLee last edited by

      Moin!

      Kurze Frage:

      Kann ich von mehreren ioBroker Installationen mittels sql-Adapter die selbe Datenbank verwenden?

      Erzeugt jeder ioBroker dann eigene Daten oder können Datenpunkte die nur die eine Instanz loggt auch von der anderen ausgelesen werden?

      Danke im vorraus

      Mr.Lee

      1 Reply Last reply Reply Quote 0
      • apollon77
        apollon77 last edited by

        Hey,

        das sollte bei MySQL und MSSQL kein Problem sein, da der DB-Name pro Instanz angegeben werden kann. Damit kannst Du ach mit einem DB-Server jede Instanz in eine getrennte DB schreiben lassen. Die kommen sich nicht in die quere (also mal mind. bei MySQL und MSSQL). Bei Postgres und SQLite geht das glaube ich nicht so ohne weiteres.

        Sogar das "gegenseitig lesen" müste gehen indem Du eine zweite Instanz anlegst wo Du den anderen DB-namen einträgst und sicherstellst das keine Datenpunkte da rein geloggt werden. Dann könnte getHistory und in jedem Fall query gehen

        Warum eigentlich mehrere Installationen? Multi-Host geht nicht?

        1 Reply Last reply Reply Quote 0
        • M
          MrLee last edited by

          Moin!

          Danke fürs Feedback.

          Ich wollte eigentlich beide Systeme jeweils in die SELBE Datenbank auf dem selben Server schreiben/lesen lassen.

          Warum…nunja...eigentlich..Spieltrieb.

          Ich habe eine Liv-e und eine Fallback/Test-System die ich zyklisch gleichhalte.

          Per nginx-Frontend-Server kommt man auf das Live-System und im Aufalls-Fall aus Fallback...

          P.S.: Eins der Systeme ist ein MultiHost mit 4 RasPis..

          1 Reply Last reply Reply Quote 0
          • apollon77
            apollon77 last edited by

            Wenn Du sicherstellen kannst das das Fallback-System keine Datenpunkte loggt/Daten erhält die vom anderen System auch geschrieben werden, sollte das passen. Dann kommen die sich nicht ins Gehege

            1 Reply Last reply Reply Quote 0
            • M
              MrLee last edited by

              …ich weiß ich nerve...

              Aber doch: beide sollen identisch sein...eben auch bez. der LogDaten...HotStandby halt...

              1 Reply Last reply Reply Quote 0
              • apollon77
                apollon77 last edited by

                Nervst nicht 🙂 Finde das eher ein sehr interessantes Thema …

                Wenn aber alles aktuell live läuft, dann fallen auch bei beiden die Daten an. Da es zwei getrennte Instanzen sind laufen alle Log-Checks doppelt - ergo du loggst Daten doppelt was ggf zu Duplicate-keys (Timestamp) u.ä, führen müsste (vermutung).

                Hot Standby ist auf der "History-Datenlogging"-Ebene an der stelle schwierig.

                Das Thema geht ja aber weiter: Wenn Du Logik(Skripte, Szenen u.ä.) hast die ausgeführt werden, willst Du ja auch nicht das das doppelt läuft.

                Bedeutet für mich: Das "aktuelle Hot-Standy-Fallback-System" darf gern alle Daten erhalten, aber darf nichts tun. Bedeutet an sich: History-Logging müsste aus sein, alle "Logik-Skripte" u.ä. Adapter müssten auch aus sein. Bist also am Ende eher bei einem "Warm Standby", weil Du im Notfall neben dem "umswitchen" noch Dinge Aktivieren musst ( und im alten System deaktivieren).

                Oder ?!

                1 Reply Last reply Reply Quote 0
                • M
                  MrLee last edited by

                  Ok, also im schlimmsten Fall einfach nur Datenverdopplung.

                  Könnte der SQL-Adapter nicht vorm schreiben prüfen ob der Wert (Timestamp, Datenpunkt, value) schon da ist?

                  Thema Hot/Warm:

                  Touché..aber ich habe bis auf Alex (Cloud-Adapter) nix was Logik macht und steuert.

                  Meine Gesamte Ablauflogik liegt auf der CCU (yahm). Da habe ich noch ne echte CCU, die ist dann aber cold (IP-Adresse, Funkschnittstelle, Ablauflogik).

                  Fange gerade erst an ein wenig mit JScript zu spielen und werde das dann über sync der config und deaktivieren des Adapters auf dem Testsystem lösen…

                  Am liebsten wäre mir, wenn bei einer MultiHost-Umgebung mehrere Master existieren könnten.

                  Dann hätte man zumindest eine Warm-Standby-Umgebung, sprich man könnte Adapter oder eben auch die Masterfunktion per Admin-Konsole auf einen anderen Host verschieben...

                  Aber bis dahin halt zwei Systeme...

                  1 Reply Last reply Reply Quote 0
                  • apollon77
                    apollon77 last edited by

                    @MrLee:

                    Könnte der SQL-Adapter nicht vorm schreiben prüfen ob der Wert (Timestamp, Datenpunkt, value) schon da ist? `
                    Aus Performancegründen würde ich das nicht einbauen wollen …

                    Also ich habe es so gelöst das ich ein Warm-Standby System habe. Für die States nehme ich Redis und da ist auf dem Warm-Standy ein Redis-Slave. Damit sind mal alle State-Daten da. Der Redis ist mit einer Zeile in der Konfig zum Master gemacht.

                    ioBroker-Daten(also das Verzeichnis) an sich wird regelmäßig per rsync auf den Warm-Standby Rechner gesynct der hat HW- und OS-mäßig identisch ist zum Hauptsystem. Da ändert sich aber im Normalfall nur das objects.json. Heisst im Notfall reicht dort ein fixen des Hostnamens in der iobroker-Konfig und der Master läuft wieder. Für die Slaves hab ich nen DNS-Eintrag der auf den Master zeigt mit dem die Verbunden sind (ebenso für Redis). Also mit Ändern des DNS-Eintrags ist es auch gefixt.

                    Sind also ein paar Handgriffe leider, und auch welche die blöd zu automatisieren sind.

                    Die "Multi-Master"-Idee ist schon in einigen Köpfen, aber hier ist meiner Meinung nach ganz wichtig nicht zu wenig zu machen, weil man sonst zu schnell in komische Situationen kommt. Theoretisch müsste man eine Quorum-Logik bauen und das heisst das mindestens 3 Rechner nötig sind um zu sagen ob der aktuelle Master wirklich tod ist und sich auf einen neuen zu einigen falls man das automatisieren will. Das kann alles beliebig komplex werden.

                    Mal schauen.

                    1 Reply Last reply Reply Quote 0
                    • First post
                      Last post

                    Support us

                    ioBroker
                    Community Adapters
                    Donate
                    FAQ Cloud / IOT
                    HowTo: Node.js-Update
                    HowTo: Backup/Restore
                    Downloads
                    BLOG

                    911
                    Online

                    32.0k
                    Users

                    80.5k
                    Topics

                    1.3m
                    Posts

                    2
                    8
                    914
                    Loading More Posts
                    • Oldest to Newest
                    • Newest to Oldest
                    • Most Votes
                    Reply
                    • Reply as topic
                    Log in to reply
                    Community
                    Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                    The ioBroker Community 2014-2023
                    logo