Jednokierunkowa synchronizacja z mssql do mysql

Jednokierunkowa synchronizacja z mssql do mysql
PI
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 113
0

Witam mam pytanie osób które miały styczność z taką synchronizacją baz danych, chciałem przeprowadzić jednokierunkową synchronizacje baz danych z mssql do mysql (cały crud najlepiej na określonej tabeli)
Tzn mam program księgowy/sprzedażowy w windows który zapisuje w bazie mssql i chciałbym wykonać synchronizacje jednokierunkową z mssql do mysql możliwe jak najbliżej czasu rzeczywistego

chatgpt podpowiada że np ds symmetric będzie do tego odpwiedni czy ktoś już wykonywał taką synchronizację ?

FA
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 218
0

Rozwiązań jest pewnie wiele, ale dobór właściwego zależeć będzie od tego, jakie stawiasz warunki, np.:

  1. Jak często chcesz wykonywać synchro
  2. Ile tabel chcesz synchronizować
  3. Jak duży ruch jest na tej bazie
  4. Czy dopuszczasz konieczność "oprogramowania" synchronizacji każdej tabeli z osobna, czy potrzebujesz narzędzia, w którym wybierzesz tabelę, a ono samo za Ciebie będzie rzeźbić

Najprostsze (co nie znaczy, że najłatwiejsze) rozwiązanie, jakie przychodzi mi na myśl, to skonfigurowanie w MS LinkedServera do mySQL i cykliczne pisanie do drugiej bazy za pomocą OPENQUERY. Ale żeby to miało ręce i nogi, musisz dla synchronizowanej tabeli mieć zdefiniowane przynajmniej jedno pole mówiące o tym, czy dany rekord był już synchronizowany, żeby nie mielić każdorazowo całej tabeli. No i obsługę rekordów usuniętych też trzeba jakoś ogarnąć (być może stosując dodatkową tabelę).

Z innych rozwiązań, MS dostarcza coś, co zwie się SSIS (SQL Server Integration Services) i służy między innymi do tego, co chcesz zrobić. Ale nigdy tego nie używałem, więc nie wiem, na ile to pomocne.

AD
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 342
1

Jaki masz ruch na tej tabeli? Dużo tam jest danych do transferowania? Możesz wprowadzać zmiany na bazie systemu ksigowego czy jest to zablokowane np na poziomie licencji itp?

markone_dev
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 833
0
Pitasato napisał(a):

chciałbym wykonać synchronizacje jednokierunkową z mssql do mysql możliwe jak najbliżej czasu rzeczywistego

Jak najbliżej czasu rzeczywistego będzie rozwiązanie oparte o Change Data Capture. Każda operacja typu create/update/delete do MSSQL będzie skutkować emisją eventu, który możesz obsłużyć np. robiąc zapis do MySQL.

Żeby to zrobić będziesz musiał skonfigurować w Debezium connector do MSSQL w taki sposób by nasłuchiwał na zdarzenia i publikował je na Kafkę, a następinie connectorem dla MySQL zczytywać zdarzenia z Kafki i zapisywać w MySQL. Jak potrzebujesz robić jakieś transformacje po drodze to pewnie będziesz musiał napisać swój własny Listener który odbiera zdarzenia z MSSQL, robi transformację do nowego formatu i zapisuje w MySQL.

Jest to dość skomplikowane ale integracje w czasie rzeczywistym są z natury złożone, więc infrastruktura do ich implementacji musi być odpowiednio skomplikowana.

FA
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 218
2
markone_dev napisał(a):
Pitasato napisał(a):

chciałbym wykonać synchronizacje jednokierunkową z mssql do mysql możliwe jak najbliżej czasu rzeczywistego

Jak najbliżej czasu rzeczywistego będzie rozwiązanie oparte o Change Data Capture. Każda operacja typu create/update/delete do MSSQL będzie skutkować emisją eventu, który możesz obsłużyć np. robiąc zapis do MySQL.

Żeby to zrobić będziesz musiał skonfigurować w Debezium connector do MSSQL w taki sposób by nasłuchiwał na zdarzenia i publikował je na Kafkę, a następinie connectorem dla MySQL zczytywać zdarzenia z Kafki i zapisywać w MySQL. Jak potrzebujesz robić jakieś transformacje po drodze to pewnie będziesz musiał napisać swój własny Listener który odbiera zdarzenia z MSSQL, robi transformację do nowego formatu i zapisuje w MySQL.

Jest to dość skomplikowane ale integracje w czasie rzeczywistym są z natury złożone, więc infrastruktura do ich implementacji musi być odpowiednio skomplikowana.

Jeśli ma być 100% w czasie rzeczywistym, to nie może być mowy o rozwiązaniach pośredniczących (bo pośrednik wprowadza dodatkową awaryjność i opóźnienie). Real-time wymaga synchroniczności operacji, a ta jest raczej niepożądana.

To, co opisałeś, można ogarnąć bez żadnych pośredników firm trzecich. Ot, Trigger na tabeli + Kolejka Service Broker + INSERT/UPDATE/DELETE bezpośrednio na OPENQUERY(mySQL).

Miang
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 1792
2

a możesz edytować tę bazę MS SQL, na przykład dodać te triggery co Ci tu proponują?

YA
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 2384
0

A dlaczego chcesz dodawać MySQL i replikować tam? Może postawienie dedykowanej MSSQL i replikacja tam za pomocą mechanizmów replikacyjnych MSSQL -> MSSQL byłoby alternatywą wartą rozważenia?

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.