Sziasztok!
Adott egy MSSQL adatbázis, erről szeretnék replikációt (napi vagy órás szinten) egy másik fizikai helyen lévő, Ubuntu szerveren futó MySQL adatbázis alá, a lehető legfájdalommentesen.
Amit találtam eddig:
első körben a google volt az én barátom, íme egy öt éves fórumtopic:
http://forums.mysql.com/read.php?60,16386,63672#msg-63672
ebből ejutottam ide:
http://enterprise.replicator.daffodilsw.com/
Ez egy java alapu adatbázis replicator tool, akár meg is lehetne vele oldani a problémát.
Viszont a kérdésem az lenne, hogy nem tudja ezt a mysql server out-of-box valahogyan?
- 2049 megtekintés
Hozzászólások
A és B adatbáziskelező valamilyen köztes cucc nélkül biztos nem fogsz replikálni, már csak az apró SQL nyelvi eltérések miatt sem. Ha nagyon egyszerű az adatbázis próbáld meg, hogy az MSSQL dumpját betöltöd a MySQL-be, hátha...
- A hozzászóláshoz be kell jelentkezni
A dump betöltés elég költséges lenne 10 percenként, nem gondolod? :)
- A hozzászóláshoz be kell jelentkezni
"erről szeretnék replikációt (napi vagy órás szinten)"
vs.
"10 percenként"
Ezt tisztaznad?! Nagyban befolyasol(hat)ja a megoldasi javaslatokat.
- A hozzászóláshoz be kell jelentkezni
nagy adatbázisról van szó, sokmillió rekordról,
szóval a teljes adatbázis lehúzása óránként se játszhat.
Ha megvan a megoldás, akkor meg szinte mindegy, hogy óránként, vagy 10 percenként frissítünk.
- A hozzászóláshoz be kell jelentkezni
Ez nem volt benne a nyitó hszben. :) A db fontosságából nem következik a mérete. :)
Query log bekapcsolása és az alapján a változások "visszajátszása" sem játszik?
- A hozzászóláshoz be kell jelentkezni
A kérdés, hogy a táblák csak nőnek vagy változnak is.
Ha csak nőnek, akkor legutolsó áthúzott PK utánikat kell áthúznod.
Ha változnak is (delete, update), akkor az adatstruktúra megbolygatása nélkül minden táblára rátehetsz egy triggert, ami minden változást letol egy másik táblába egy-két plusz mezővel, az egyik mondjuk egy parancs (insert, update, delete), a másik pedig egy processed bit, amit mysql frissítés után átbillentesz.
- A hozzászóláshoz be kell jelentkezni
Ez csak 4 éves! :D
--
A gyors gondolat többet ér, mint a gyors mozdulat.
- A hozzászóláshoz be kell jelentkezni
Használtad már?
most nézem, hogy a mysql.com-hoz le lehet tölteni minden OS alá a Connector/ODBC-t...
- A hozzászóláshoz be kell jelentkezni
nem. szerencsére csak mysql-mysql között kell replikálnom.
--
A gyors gondolat többet ér, mint a gyors mozdulat.
- A hozzászóláshoz be kell jelentkezni
És működik rendbe?
Nekem úgy 1-2 havonta random szétesett mindíg...
---
KORPIKLAANI-Tequila http://youtu.be/wzEahz7pa7k
- A hozzászóláshoz be kell jelentkezni
Egy stabil megoldást ismerek nagyon régóta. Az eljárás egyszerű, csatlakozás mysql-hez táblák lekérdezése akár *-al majd ugyanez a insert az mssql nél. Vagy fordítva. ezt phpban megírva láttam. Nem túl hosszan, annyi különbséggel hogy nem minden táblát vitt át és valahogyan tudta hol tartott és teljes szinkron csak hetente volt ...
- A hozzászóláshoz be kell jelentkezni
LOL
---
KORPIKLAANI-Tequila http://youtu.be/wzEahz7pa7k
- A hozzászóláshoz be kell jelentkezni
Ennyire azért nem vagyunk favágók :)
(amúgy ha soronként lenne egy last_updated_time mező, akkor akár ez a megoldás is játszhatna, de az MSSQL szerverhez nem szeretnék SQL konzolt, ha anélkül is megoldható a történet)
- A hozzászóláshoz be kell jelentkezni
ÁÁÁÁ ... dehogy ez nem favágás hanem szisztematikus fa darálás.
Kb.
mysql_select * from XX > file_XX_mysql
mssql_select * from XX > file_XX_ms
diff file_XX_mysql file_XX_ms > diff_XX
insert diff_XX
Ne röhögjetek, nem vagyok programozó, de még az is lehet hogy a favágás végén befűtök és nem fogok fázni :D
- A hozzászóláshoz be kell jelentkezni
Nem kell programozonak lenned, hogy erezd azt, hogy feleslegesen kerdezel le minden alkalommal minden egyes rekordot...
Es itt jon az almodozas:
Biztosan van olyam megoldas is ami pl ezt csinalja:
mssql_incremental_select_from_the_last_select * from XX > file_incremental_XX_mssql
insert file_incremental_XX_mssql into mysql
Szemely szerint, sajnos nem tudok segiteni, csak elmeleti sikon fejtegetem a problemat ;)
Szerk: Kollega tudja gyakorlatban is?!:
http://hup.hu/node/100302#comment-1238567
- A hozzászóláshoz be kell jelentkezni
Ha vadállat vagy akkor az mssql log-ot fullra állítod és replay-eled mysql-en xD
- A hozzászóláshoz be kell jelentkezni
-
- A hozzászóláshoz be kell jelentkezni