Wir führen eine Java PoS-Anwendung (Point of Sale) in verschiedenen Shops mit einem MySql-Backend aus. Ich möchte die Datenbanken in den Shops mit einer Datenbank auf einem Hostserver synchronisieren.
Wenn einige Änderungen in einem Shop vorgenommen werden, sollten sie auf dem Hostserver aktualisiert werden. Wie erreiche ich das?
Antworten:
Die Replikation ist nicht sehr schwer zu erstellen.
Hier sind einige gute Tutorials:
http://aciddrop.com/2008/01/10/step-by-step-how-to-setup-mysql-database-replication/
http://www.ghacks.net/2009/04/09/set-up-mysql-database-replication/
http://dev.mysql.com/doc/refman/5.5/en/replication-howto.html
http://www.lassosoft.com/Beginners-Guide-to-MySQL-Replication
Hier einige einfache Regeln, die Sie beachten müssen (es gibt natürlich noch mehr, aber das ist das Hauptkonzept):
Auf diese Weise vermeiden Sie Fehler.
Beispiel: Wenn Ihr Skript sowohl auf dem Master als auch auf dem Slave in dieselben Tabellen eingefügt wird, liegt ein doppelter Primärschlüsselkonflikt vor.
Sie können den "Slave" als "Backup" -Server anzeigen, der dieselben Informationen wie der Master enthält, jedoch keine Daten direkt hinzufügen kann. Befolgen Sie nur die Anweisungen des Master-Servers.
HINWEIS: Natürlich können Sie vom Master lesen und auf den Slave schreiben, aber stellen Sie sicher, dass Sie nicht in dieselben Tabellen schreiben (Master zu Slave und Slave zu Master).
Ich würde empfehlen, Ihre Server zu überwachen, um sicherzustellen, dass alles in Ordnung ist.
Lassen Sie mich wissen, wenn Sie zusätzliche Hilfe benötigen
quelle
drei verschiedene Ansätze:
Klassischer Client / Server-Ansatz: Stellen Sie keine Datenbank in die Shops. Lassen Sie die Anwendungen einfach auf Ihren Server zugreifen. Natürlich ist es besser, wenn Sie ein VPN einrichten, aber es ist sinnvoll, die Verbindung einfach in SSL oder ssh zu verpacken. Pro: So wurden Datenbanken ursprünglich gedacht. Con: Wenn Sie eine hohe Latenz haben und komplexe Vorgänge langsam werden können, müssen Sie möglicherweise gespeicherte Prozeduren verwenden, um die Anzahl der Roundtrips zu verringern.
replizierter Master / Master: wie von @Book Of Zeus vorgeschlagen. Nachteile: Die Einrichtung ist etwas komplexer (insbesondere wenn Sie mehrere Geschäfte haben). Das Einfahren eines Geschäftsautomaten kann möglicherweise das gesamte System gefährden. Vorteile: Bessere Reaktionsfähigkeit, da Lesevorgänge vollständig lokal sind und Schreibvorgänge asynchron weitergegeben werden.
Offline-Vorgänge + Synchronisierungsschritt: Alle Arbeiten werden lokal ausgeführt und von Zeit zu Zeit (möglicherweise einmal pro Stunde, täglich, wöchentlich usw.) eine Zusammenfassung mit allen neuen / geänderten Datensätzen aus dem letzten Synchronisierungsvorgang erstellt und an den Server gesendet. Vorteile: Kann ohne Netzwerk arbeiten, schnell, einfach zu überprüfen (ob die Zusammenfassung lesbar ist). Nachteile: Sie haben keine Echtzeitinformationen.
quelle
SymmetricDS ist die Antwort. Es unterstützt mehrere Teilnehmer mit einer Richtung oder einer bidirektionalen asynchronen Datenreplikation. Es verwendet Web- und Datenbanktechnologien, um Tabellen zwischen relationalen Datenbanken nahezu auf Wunsch in Echtzeit zu replizieren.
Umfassende und robuste Java-API für Ihre Anforderungen.
quelle
Schauen Sie sich die Tools zum Schema- und Datenvergleich in dbForge Studio für MySQL an. Mit diesem Tool können Sie vergleichen, die Unterschiede erkennen, ein Synchronisationsskript erstellen und zwei Datenbanken synchronisieren.
quelle