Jednokierunkowa synchronizacja z mssql do mysql

Jednokierunkowa synchronizacja z mssql do mysql
PI
  • Rejestracja:około 9 lat
  • Ostatnio:dzień
  • 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:prawie 5 lat
  • Ostatnio:około godziny
  • Postów:193
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.


Chciałbym kiedyś wiedzieć tyle, by spełniać wymagania na moim obecnym stanowisku :)
AD
Użycie ssis w tym przypadku to chyba trochę strzelanie do muchy z armaty. Liked service i trigger to chyba najprostsze z punktu widzenia implementacji.
FA
synchro na poziomie triggera jest kuszące (bo real-time synchro i dużo prostsze w implementacji), ale w przypadku niedostępności LinkedServera rodzi wyjątek, który trzeba zabezpieczyć, a finalnie i tak odpalać synchronizację on-demand
AD
Dokładnie tak. Dlatego trzebaby więcej szczegółów od opa żeby coś wyrokować.
AD
  • Rejestracja:ponad rok
  • Ostatnio:około 2 godziny
  • Postów:335
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:ponad 3 lata
  • Ostatnio:8 dni
  • Postów:822
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.


Programujący korpo architekt chmurowy.
Udzielam konsultacji i szkoleń w obszarze szeroko pojętego cloud computingu (Azure, AWS) i architektury systemów IT. Dla firm i prywatnie.
DevOps to proces nie stanowisko.
FA
  • Rejestracja:prawie 5 lat
  • Ostatnio:około godziny
  • Postów:193
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).


Chciałbym kiedyś wiedzieć tyle, by spełniać wymagania na moim obecnym stanowisku :)
edytowany 2x, ostatnio: Fac
Miang
  • Rejestracja:około 7 lat
  • Ostatnio:minuta
  • Postów:1682
2

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


dzisiaj programiści uwielbiają przepisywać kod z jednego języka do drugiego, tylko po to by z projektem nadal stać w miejscu ale na nowej technologii
AD
Już o to pytałem ale bez efektu
Miang
technicznie czy w ogóle jest tam jakaś możliwość, niezależnie od tej licencji
YA
  • Rejestracja:około 10 lat
  • Ostatnio:13 minut
  • Postów:2370
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?

flinst-one
Pewnie chodzi o koszty licencji drugiej maszyny. Albo jest to jakaś hurtownia danych po taniości, więc nie ma sensu inwestować dużo dinero w to.
AD
To jest system księgowy. Przynajmniej tak wynika z opisu

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.