Laden...

2 Datenbanken synchron halten

Erstellt von Qwald vor 15 Jahren Letzter Beitrag vor 15 Jahren 1.774 Views
Q
Qwald Themenstarter:in
214 Beiträge seit 2006
vor 15 Jahren
2 Datenbanken synchron halten

verwendetes Datenbanksystem: MySQL

Hallo,
und zwar möchte ich 2 MySQL Datenbanken sychron halten, bevor ich aber nun auf Google verwiesen werde, möchte ich euch mein Problem etwas genauer erklären, denn es ist leider nicht so einfach wie gedacht.

Also ich schreibe eine Applikation, die wichtige Daten (Kundendaten etc.) auf einem MySQL Datenbank Server hinterlegt. Dieser Datenbank-Server ist bei einem entsprechenden Webhoster gemietet (normaler Webspace mit Datenbank).
Die Applikation arbeitet eigentlich primär auf dieser Datenbank.

Der Datenbank Server ist nun per Internet zu erreichen, da die Applikation an den verschiedensten Orten in Deutschland eingesetzt werden soll, wobei man aber nicht jedes mal wieder die Applikation mitschleppen muss, sprich, lokale Speicherung der Daten ist nicht möglich.

So nun ist aber das Problem, was passiert, wenn der Internet-Zugang mal nicht möglich ist. Dann würde das Programm nicht lauffähig sein, was vermieden werden soll.

Also dachte ich mir, ich arbeite mit 2 MySQL Datenbanken, eine lokal auf dem jeweiligen Rechner hinterlegt und eine Master-Datenbank im Internet.

Aber wie hält man diese nun sychron?
Da ich an der MySQL Datenbank im Internet nichts ändern kann, entfallen die MySQL Replikations Techniken soweit (oder?). Ebenso kann ich auf dem Web Space auch keine eigenen Anwendungen laufen lassen.

Nun hab ich mir folgendes Konzept überlegt:
Die lokale Anwendung kommuniziert ausschließlich mit der lokalen Datenbank. Wenn nun ein Insert, Update oder Delete durchgeführt wird, dann geschieht dieses auf der lokalen DB.
Zusätzlich werden diese Befehle an einen Background-Service gesendet der diese abspeichert und abarbeitet. Wenn also eine Internet Verbindung besteht, sendet der Background-Service diese SQL Befehle weiter an den Master-MySQL Server im Internet.
Dort wird eine Historie geführt (eine weitere SQL Tabelle), welche SQL Befehle (nur Insert etc.) im gesamten Leben der Datenbank bearbeitet wurde.

Wenn sich die lokale DB nun sychronisieren soll (es wird regelmäßig überprüft ob das nötig ist), dann wird in der Historie der Master-Datenbank nachgeguckt, ob neue SQL Befehle vorhanden sind. Sollte dies der Fall sein, werden diese an die lokale DB gesendet und in der lokalen DB als 'ausgeführt' vermerkt.

Die Datenbank ist relativ klein und der Zuwachs ist auch gering. Ebenso sind nur maximal 2 Personen mit dem Programm am arbeiten.

Seht ihr Probleme in meinem Konzept? Wie könnte man es besser lösen? Gibt es da irgendwelche Strategien die man anwenden könnte?

1.200 Beiträge seit 2007
vor 15 Jahren

Also ich würde mir halt einfach einen Root-Server mieten bei dem du selbst die DB konfigurieren darfst. Das kostet doch auch nicht wesentlich mehr.

Dann ganz normale Replikationstechniken anwenden:

http://www.howtoforge.com/mysql_database_replication

Ist doch einfach.

Shift to the left, shift to the right!
Pop up, push down, byte, byte, byte!

YARRRRRR!

1.200 Beiträge seit 2007
vor 15 Jahren

Siehe auch: http://www.onlamp.com/pub/a/onlamp/2006/04/20/advanced-mysql-replication.html

Sektion: Circular replication with two nodes

Shift to the left, shift to the right!
Pop up, push down, byte, byte, byte!

YARRRRRR!

Q
Qwald Themenstarter:in
214 Beiträge seit 2006
vor 15 Jahren

Hallo,
ein Root/vServer-Server ist leider nicht möglich, da zum einen das nötige Know How fehlt einen Root-Server richtig abzusichern und vorallem auch die Zeit für die ständige Pfelge und Kontrolle des Servers fehlt.
Da ist mir eine gemietete Datenbank bei einem vertrauensvollem Hoster bedeutend lieber, die Gefahr etwas falsch zu machen ist geringer und der Zeitaufwand für die Pfelge ist erheblich geringer bzw. diese obliegt beim Hoster.

Ein managed Server ist aus Kostengründen leider nicht möglich.

5.742 Beiträge seit 2007
vor 15 Jahren

Hallo Qwald,

vielleicht interessieren dich auch in diesem Zusammenhang die Sync Services for ADO.NET 2.0.
Meine Erfahrungen darin sind jedoch leider nur sehr grob und ausschließlich theoretisch.