W różnych sklepach prowadzimy aplikację Java PoS (Point of Sale) z zapleczem MySql. Chcę, aby bazy danych w sklepach były zsynchronizowane z bazą danych na serwerze hosta.
Gdy w sklepie zajdą jakieś zmiany, powinny one zostać zaktualizowane na serwerze hosta. Jak to osiągnąć?
Odpowiedzi:
Replikacja nie jest trudna do stworzenia.
Oto kilka dobrych samouczków:
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
Oto kilka prostych zasad, o których musisz pamiętać (jest ich oczywiście więcej, ale to główna koncepcja):
W ten sposób unikniesz błędów.
Na przykład: jeśli skrypt wstawi się do tych samych tabel zarówno na serwerze głównym, jak i podrzędnym, wystąpi zduplikowany konflikt klucza podstawowego.
Możesz postrzegać „slave” jako serwer „zapasowy”, który zawiera te same informacje co serwer główny, ale nie może bezpośrednio dodawać danych, postępuj tylko zgodnie z instrukcjami serwera głównego.
UWAGA: Oczywiście możesz czytać z mastera i możesz pisać do slave, ale upewnij się, że nie piszesz do tych samych tabel (master to slave i slave to master).
Zalecałbym monitorowanie serwerów, aby upewnić się, że wszystko jest w porządku.
Daj mi znać, jeśli potrzebujesz dodatkowej pomocy
źródło
trzy różne podejścia:
Klasyczne podejście klient / serwer: nie umieszczaj bazy danych w sklepach; po prostu pozwól aplikacjom uzyskać dostęp do twojego serwera. Oczywiście lepiej jest ustawić VPN, ale zwykłe zawinięcie połączenia SSL lub ssh jest rozsądne. Pro: tak pierwotnie myślano o bazach danych. Wada: jeśli masz duże opóźnienia, złożone operacje mogą działać wolno, może być konieczne użycie procedur składowanych, aby zmniejszyć liczbę rund.
replikowany wzorzec / wzorzec: jak sugerował @Book Of Zeus. Wady: nieco bardziej skomplikowana konfiguracja (zwłaszcza jeśli masz kilka sklepów), włamanie do dowolnego urządzenia warsztatowego może potencjalnie zagrozić całemu systemowi. Zalety: lepsza responsywność, ponieważ operacje odczytu są całkowicie lokalne, a operacje zapisu są propagowane asynchronicznie.
operacje offline + krok synchronizacji: wykonuj całą pracę lokalnie i od czasu do czasu (może to być raz na godzinę, codziennie, co tydzień, cokolwiek), napisz podsumowanie wszystkich nowych / zmodyfikowanych rekordów z ostatniej operacji synchronizacji i wyślij na serwer. Zalety: może działać bez sieci, szybko, łatwo sprawdzić (czy podsumowanie jest czytelne). Wady: nie masz informacji w czasie rzeczywistym.
źródło
Odpowiedzią jest SymmetricDS. Obsługuje wielu abonentów z jednokierunkową lub dwukierunkową asynchroniczną replikacją danych. Wykorzystuje technologie internetowe i bazodanowe do replikowania tabel między relacyjnymi bazami danych, w czasie zbliżonym do rzeczywistego, jeśli jest to pożądane.
Kompleksowe i niezawodne API Java dostosowane do Twoich potrzeb.
źródło
Przyjrzyj się narzędziom do porównywania schematów i danych w dbForge Studio dla MySQL. Te narzędzia pomogą Ci porównać, zobaczyć różnice, wygenerować skrypt synchronizacji i zsynchronizować dwie bazy danych.
źródło