MySql Tabellen von verschiedenen Geräten in eine Server Mysql Datenbank spiegeln
Hallo,
ich bin im Bereich Linux und Datenbanken ganz neu. Habe bis jetzt C für Mikrocontroller entwickelt.
Nun muss bzw darf ich etwas mit Datenbanken machen.
Ich soll auf verschiedenen Linux Geräten Sensordaten in eine MySql Datenbank Sammeln. Diese Geräte haben aber nicht immer eine Verbindung zum Internet.
Wenn das Internet vorhanden ist soll die Lokale Datenbanktabelle in eine Server MySqldatenbank gespiegelt werden. bzw Die neuen Daten an den Server übertragen werden.
Mein erster Gedanken war MySQL Replikation.
Nach dem lesen der Doku scheint mir aber dieses Werkzeug nicht als das richtige. Oder kann man von verschieden Clients auf einen Server synkronisieren? Mit welchen Werkzeug löst man diese Aufgabe?
Danke für die Hilfe
ich bin im Bereich Linux und Datenbanken ganz neu. Habe bis jetzt C für Mikrocontroller entwickelt.
Nun muss bzw darf ich etwas mit Datenbanken machen.
Ich soll auf verschiedenen Linux Geräten Sensordaten in eine MySql Datenbank Sammeln. Diese Geräte haben aber nicht immer eine Verbindung zum Internet.
Wenn das Internet vorhanden ist soll die Lokale Datenbanktabelle in eine Server MySqldatenbank gespiegelt werden. bzw Die neuen Daten an den Server übertragen werden.
Mein erster Gedanken war MySQL Replikation.
Nach dem lesen der Doku scheint mir aber dieses Werkzeug nicht als das richtige. Oder kann man von verschieden Clients auf einen Server synkronisieren? Mit welchen Werkzeug löst man diese Aufgabe?
Danke für die Hilfe
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 600820
Url: https://administrator.de/forum/mysql-tabellen-von-verschiedenen-geraeten-in-eine-server-mysql-datenbank-spiegeln-600820.html
Ausgedruckt am: 07.06.2025 um 04:06 Uhr
13 Kommentare
Neuester Kommentar
Hallo,
so als Gedanke.
In den zu übertragenden Tabellen eine zusätzliche Spalte ob schon übertragen oder nicht.
Dann vor deine Zentraldatenbank einen Webservice spannen.
Jetzt kannst du am Client einen Request per HTTPS machen und damit die Daten übertragen und am Server durch den Webservice den DB Eintrag machen. Und das ganze dann als Service der das alle x Minuten oder wie immer du willst das macht.
Wenn der Webservice erreichbar ist setzt du die Spalte in der Tabelle am Client auf übermittelt.
Dadurch hast du auch wenig Firewall Probleme.
so als Gedanke.
In den zu übertragenden Tabellen eine zusätzliche Spalte ob schon übertragen oder nicht.
Dann vor deine Zentraldatenbank einen Webservice spannen.
Jetzt kannst du am Client einen Request per HTTPS machen und damit die Daten übertragen und am Server durch den Webservice den DB Eintrag machen. Und das ganze dann als Service der das alle x Minuten oder wie immer du willst das macht.
Wenn der Webservice erreichbar ist setzt du die Spalte in der Tabelle am Client auf übermittelt.
Dadurch hast du auch wenig Firewall Probleme.

Oder nen sqldump via ssh auf die Zieldb.
https://serverfault.com/questions/356070/how-to-sync-two-mysql-tables-on ...
https://serverfault.com/questions/356070/how-to-sync-two-mysql-tables-on ...
Nun - das kommt drauf an wieviel Einfluss du hast. Ich habe sowas ähnliches, meine Software schreibt nur lokal in die DB und dann gibt es einen „Cache-Controller“ der die Daten von der lokalen DB in die Zentrale DB schreibt und das lokale löscht (wenn das Schreiben erfolgreich war) bzw. der einfach 10 - 60 min später nen Retry macht wenn es nicht erfolgreich war.
So habe ich nicht das Problem das Daten doppelt da sind oder verloren gehen...
So habe ich nicht das Problem das Daten doppelt da sind oder verloren gehen...

Zitat von @3rikaa:
RTFMZitat von @145033:
Oder nen sqldump via ssh auf die Zieldb.
https://serverfault.com/questions/356070/how-to-sync-two-mysql-tables-on ...
Hallo wie weit ist der Dump einstellbar? Oder wird hier immer alles kopiert?Oder nen sqldump via ssh auf die Zieldb.
https://serverfault.com/questions/356070/how-to-sync-two-mysql-tables-on ...
https://dev.mysql.com/doc/refman/8.0/en/mysqldump.html#mysqldump-filter- ...
Ich persönlich würde es mit PHP machen, zumindest den Webservice.
ASP.NET würd auch gehen.
Besonders Hipp ist glaub ich für sowas JS.Node
Aber ist ja Geschmackssache hat alles seine Vor und Nachteile.
Im Endeffekt ist das aber nicht anderes als der angesproche "Cache Controller" nur das ich die Daten auf dem Client lasse. Je nachdem wie du das benötigst.
Zitat von @3rikaa:
was meinst du damit?
Danke für deine Hilfe
Zitat von @certifiedit.net:
Solide Idee, damit wirfst du dann im Zweifel doppelte Schlüssel rein oder am Ende hast du datenquark
Hallo guten Abend,Solide Idee, damit wirfst du dann im Zweifel doppelte Schlüssel rein oder am Ende hast du datenquark
was meinst du damit?
Danke für deine Hilfe
Das der Vorschlag von @145033 die eine oder andere Schwäche hat.
Das hab ich selbst gebaut ... ist jetzt aber nicht die ganz grosse Anforderung... Im Endeffekt hast du lokal eine Tabelle die genauso aussieht wie die auf dem "richtigen" Server in die deine lokale Software reinschreibt...
Der Cache-Controller geht jetzt halt ganz simpel Zeile für Zeile bei, nimmt die Daten, packt die an nen Webservice auf dem richtigen Server und wartet auf die Antwort. Wenn die Antwort ist "alles ok" dann geht der bei und haut die Zeile aus der lokalen DB raus - fertig is...
Da ich mir eine GUID aus bestimmten Werten errechne kann ich auch keine doppelten Daten haben - in dem Fall würde mein richtiger Server ein Update auf die Zeile machen und fertig. Da die GUID aber u.a. aus dem Zeitstempel errechnet wird kann es da nicht zu Problemen kommen -> zu einem Zeitpunkt habe ich ja immer nur genau einen Wert gehabt -> im dümmsten fall würde ich also nen Update auf ne DB-Zeile machen die einfach nur dieselben Daten nochmal reinpackt.
Es gibt sowas auch "von der Stange" - das ist dann nur keine DB sondern da würdest du die Daten in nen Enterprise-Service Bus (z.B. FuseESB,...) packen. Hier hast du dann 2 Queues - eine aufm Server, eine auf dem Client. Und soweit die eine Verbindung haben gleichen die sich entsprechend ab. Das ganze Verfahren hat einige Vorteile (da man die Queues gut definieren kann), wäre für meinen Fall aber einfach Overkill gewesen...
Der Cache-Controller geht jetzt halt ganz simpel Zeile für Zeile bei, nimmt die Daten, packt die an nen Webservice auf dem richtigen Server und wartet auf die Antwort. Wenn die Antwort ist "alles ok" dann geht der bei und haut die Zeile aus der lokalen DB raus - fertig is...
Da ich mir eine GUID aus bestimmten Werten errechne kann ich auch keine doppelten Daten haben - in dem Fall würde mein richtiger Server ein Update auf die Zeile machen und fertig. Da die GUID aber u.a. aus dem Zeitstempel errechnet wird kann es da nicht zu Problemen kommen -> zu einem Zeitpunkt habe ich ja immer nur genau einen Wert gehabt -> im dümmsten fall würde ich also nen Update auf ne DB-Zeile machen die einfach nur dieselben Daten nochmal reinpackt.
Es gibt sowas auch "von der Stange" - das ist dann nur keine DB sondern da würdest du die Daten in nen Enterprise-Service Bus (z.B. FuseESB,...) packen. Hier hast du dann 2 Queues - eine aufm Server, eine auf dem Client. Und soweit die eine Verbindung haben gleichen die sich entsprechend ab. Das ganze Verfahren hat einige Vorteile (da man die Queues gut definieren kann), wäre für meinen Fall aber einfach Overkill gewesen...
Ich soll auf verschiedenen Linux Geräten Sensordaten in eine MySql Datenbank Sammeln. Diese Geräte haben aber nicht immer eine Verbindung zum Internet.
Wenn das Internet vorhanden ist soll die Lokale Datenbanktabelle in eine Server MySqldatenbank gespiegelt werden. bzw Die neuen Daten an den Server übertragen werden.
Mein erster Gedanken war MySQL Replikation.
Nach dem lesen der Doku scheint mir aber dieses Werkzeug nicht als das richtige. Oder kann man von verschieden Clients auf einen Server synkronisieren? Mit welchen Werkzeug löst man diese Aufgabe?
Wenn das Internet vorhanden ist soll die Lokale Datenbanktabelle in eine Server MySqldatenbank gespiegelt werden. bzw Die neuen Daten an den Server übertragen werden.
Mein erster Gedanken war MySQL Replikation.
Nach dem lesen der Doku scheint mir aber dieses Werkzeug nicht als das richtige. Oder kann man von verschieden Clients auf einen Server synkronisieren? Mit welchen Werkzeug löst man diese Aufgabe?
Dann implementiere ein briefcase/disconnected model für den DAL.