HyperLink
Bejelentkezés
E-mail: 
Jelszó: 





Skip Navigation Links
 

Adatbázis replikáció az SQL 2000 Server-el


SQL 2000 replikáció 1. rész


A replikáció során egy adatbázis meghatározott része vagy egésze több gépen is jelen van. Minden változtatás automatikusan megjelenik az összes gépen és a szolgáltatás folyamatosan fenntartja az egyezőséget. Ez nem csak valós idejű biztonsági másolat készítést jelent, hanem azt is, hogy több gép képes ellátni ugyanazt a feladatot, ami növeli a teljesítményt. További vitathatatlan érdeme, hogy az egyik gép meghibásodása esetén a másik azonnal képes átvenni a feladatát.
Jelen résszel induló cikksorozatunkban ismertetjük a replikáció megvalósításának minden lépését és kitérünk a különböző körülményekhez igazodó megoldásokra is. Az első részben a továbbiak szempontjából nélkülözhetetlen alapfogalmak ismertetésével foglalkozunk.

Mit jelent a replikáció (többszörözés)?
Az a folyamat, ami gondoskodik arról, hogy ugyanaz az adatbázis egyszerre több gépen is jelen legyen. Felfoghatjuk ezt úgy is, mint egy biztonsági másolatot és nem is állunk messze a valóságtól, mert erre a célra is szokták használni. Az egyik adatbázisban történik egy változtatás és ez megjelenik a másik SQL Server ugyanazon adatbázisában, legyen az a Föld másik felén modemes-, vagy helyileg közvetlen kapcsolattal összekötve. Lényeg minden esetben az, hogy ugyanaz az adat több példányban jelen legyen. Tegyük fel, hogy egy Internetes áruház raktárkészlete egy SQL Server-en van. Mellette található egy másik SQL Server és a kettő között a replikáció biztosítja az adatok egyezőségét. Az ügyfelek kéréseit az első gép szolgálja ki, de váratlanul tönkremegy a merevlemeze. Ha nem működne replikáció, akkor végzetes károk is keletkezhetnének: az adatvesztés együtt járna a gép megjavításának költségével, de valószínűleg ez lenne a kisebbik tétel. Sokkal fontosabb, hogy elveszne az összes megrendelés, az ügyfelek listája, stb. Minél ritkábban készültek kézi biztonsági másolatok, annál több adat hiányozna. A problémával járó kockázatot nagyban csökkenti az automatikus replikáció által biztosított másolat. Maradva az Internetes áruház példájánál, ilyenkor automatikusan, de rosszabb esetben is egy-két egérkattintással néhány pillanat alatt üzembe helyezhető az eddig másodlagos szerepet betöltő gép, átvéve a másik szerepét. Lehet, hogy az ügyfelek az egészből semmit nem vesznek észre és a javítás költsége a hibás merevlemez cseréjében és egy újratelepítésben kimerül - gyakorlatilag minimálisra csökkenne az adatvesztés kockázata.
A replikációban résztvevő gépek kapcsolata
Fentiekben már elhangzott, hogy nem szükséges azonos hálózaton elhelyezkedniük és a köztük lévő kapcsolatnak sem feltétlenül kell állandónak lenni. Megoldható modemes összeköttetéssel időszakonkénti betárcsázással. Persze minél ritkább a kommunikáció lehetősége, annál valószínűbb, hogy lesznek különbségek az adatbázis példányokban. Döntően a feladat - amire az SQL szervert használjuk - és az adatok fontossága, összekapcsolva a fizikai csatlakoztatás költésével, határozza meg a replikáció módját. Egy hetente néhány elemében változó adatbázis replikálásához, felesleges magas költségű, állandó kapcsolatot biztosító bérelt vonalat kiépíteni. Az SQL szerver úgynevezett "laza integrációt" tart fenn a többszörözés során. Ez azt jelenti, hogy a szerverek között az adatok nem valós időben áramlanak, de a lehetőségekhez képest, mindenképpen a leggyorsabb módon. Továbbá a kapcsolatban résztvevő gépeknek nem kell egymás válaszára várni. Ilyet az E-mail küldés modelljénél láthatunk a gyakorlatban, ahol szintén nem azonnal jut el a feladótól a címzettig a levél, de a lehetőségekhez képes a leghamarabb. Ideális esetről akkor beszélhetünk, ha mindkét fél on-line állapotban van és a köztük lévő hálózat terheltsége alacsony. Az SQL szerver, ha lehet, azonnal szinkronizálja az adatbázisokat (beállításainktól függően), de minden esetben megvárja egy változtatást előidéző tranzakció végét.
A módszer előnye, hogy rendkívül széles körben, szinte bármilyen körülmények között alkalmazható. Hátránya pedig, hogy lassú kapcsolatnál különbözőségek fordulhatnak elő az adatbázisok között.
Mit replikálhatunk?
  • Teljes adatbázisokat.
  • Teljes adattáblákat.
  • Adattáblák általunk megadott sorait.
  • Adattáblák általunk megadott oszlopait.
  • Adattáblák szűrés után megjelenő adatait.
Bármelyik eshetőséget is választjuk, vegyük figyelembe, hogy csak az elsődleges kulccsal (primary key) rendelkező táblák többszörözhetők.
A replikációs partnerek típusai
A replikációban résztvevő gépek nem egyenrangúak. Több típust különböztetünk meg, más és más funkciókkal. A gyakorlati megvalósításhoz elengedhetetlen ezek ismerete.
  • Publisher (=Kiadó)
A Publisher gépek adják ki az adatokat a Subscriber (=Előfizető) gépek számára. Tehát a Publisher-en végbement változásokat veszi át a többi gép. A közzététel publikációkon (Publications) keresztül történik, minden publikáció cikkekből (Articles) áll. A cikkek az előző "Mit replikálhatunk?" c. alfejezetben felsorolt elemekből tevődhetnek össze.
  • Subscriber (=Előfizető)
A replikáció másik oldala: a Publisher által közzétett adatokat a Subscriber képes fogadni és kezelni. Tulajdonképpen ez a típus jelenti a biztonsági másolatot.
  • Distributor (=Terjesztő)
A Publisher gép adatbázisában végbemegy egy változtatás, amit replikálni kell a Subscriber gépekre. Nem a teljes adatbázis átvitele történik meg, hanem csak az előzőhöz viszonyított különbség. A Publisher logikailag nem közvetlenül a Subscriber-nek adja át az információt, hanem a Distributor-nak. A Subscriber gépek a Distributor-hoz kapcsolódnak és veszik át az adatokat. Miért jó ez? Azért mert fennáll a lehetőség, hogy egy köztes gép levegye a Publisher "válláról" a replikálással járó terhelést. A Publisher az, amelyikhez a kliensek kapcsolódnak és használják, mint adatbázis kiszolgálót. Kiélezett helyzetben, nagy terhelés mellett a Distributor jelenléte jótékony hatással van az egész adatbázis kezelés teljesítményére. Ez nem feltétlenül jelenti egy köztes, harmadik gép üzembe helyezését, ugyanis a Publisher és a Distributor szolgáltatás futhat ugyanazon az SQL szerveren.
Néhány példa a különböző típusok összekapcsolására:
  • "A" gép a Publisher és a Distributor, "B" gép a Subscriber. Az adatok az "A"-tól a "B" felé áramlanak.
  • "A" gép a Publisher, "B" gép a Distributor, "C" gép a Subscriber. Az adatok az "A"-tól a "B"-n keresztül a "C" gép felé áramlanak.
  • "A" gép a Publisher és a Distributor, "B" gép szintén Publisher és Distributor, "C" gép a Subscriber. Az adatok az "A"-tól a "B"-n keresztül a "C" gép felé áramlanak, "B" gyakorlatilag teljesen leveszi a replikációs terhelést az "A" gépről. Ezt a sémát elosztott adattárháznak (data warehouse) is nevezik, a replikáció több lépcsőben valósul meg.
  • "A" gép a Publisher és a Distributor és Subscriber, "B" gép szintén Publisher és Distributor és Subscriber. Ugyanazt az adatbázist replikálják egymás között. Bármelyik gépen történik változás, az megjelenik a másikon is.
Az SQL 2000 Server rugalmassága lehetővé teszi a különböző típusok szinte tetszés szerinti kombinációját, nagy bonyolultságú, sokgépes kapcsolatokat kialakítva.
Replikáció típusok
Most már tudjuk, hogy a replikációban résztvevő partnerek milyen szerepet kaphatnak, de még nem volt szó magának a replikációnak a fajtáiról. Összesen három típust különböztetünk meg:
  • Snapshot
A Publisher-en történt változtatások periodikusan jutnak el a Subscriber-re (Snapshot = pillanatfelvétel). Így a Subscriber adatbázisa gyakran eltér az eredetitől. Nincs szükség állandó hálózati kapcsolatra sem, de a replikáció az esetlegesen felhalmozódott változások miatt hosszabb időt vehet igénybe, mint a többi módszer esetében. Lényeg, hogy a replikációt a megadott idő lejárta váltja ki és nem a bekövetkezett változások. Akkor szokták alkalmazni, ha kicsi a többszörözendő adatbázis, ritkán történik változtatás és nincs állandó kapcsolat (pl. modemes összeköttetés).
  • Transactional
Az előző típus ellentettje. Állandó kapcsolat mellett használható hatékonyan, minden változtatás (tranzakció) azonnal átkerül a Subscriber-re. A gépeken lévő adatbázisok minimális késéssel megegyeznek. Ez a változat lényegesen nagyobb biztonságot kínál a másolat készítés terén. Alkalmazásának akkor van értelme, ha a hálózat lehetővé teszi, hogy akár másodpercenként többször is megtörténjen a replikáció. Használata kapcsoltvonali modemes csatlakozásnál nem ajánlott. Nagyobb adatbázis méretek mellett is megállja a helyét, a tranzakció szinten történő replikálás alkalmanként gyorsabb, mint a Snapshot módszer kötegelt megoldása.
  • Merge
Az előző két típusban az volt a közös, hogy a Publisher szolgáltatta az adatokat, a Subscriber pedig átvette őket, egyirányú kapcsolatot létrehozva. A Merge replikáció fő jellemzője, hogy a Subscriber gépen is lehet változtatásokat eszközölni az adatokban és azok visszakerülnek a Publisher-re. Átviteli módban mindkét előző megoldás alkalmazható: lehet időszakonkénti replikációt kérni és lehet azonnalit is. Hátránya, hogy fennáll az adatütközés veszélye. Lehet, hogy mindkét gépen ugyanazt az értéket változtatták meg és a legközelebbi többszörözés alkalmával el kell dönteni, hogy melyik az érvényes. A döntés meghozatala - ami bonyolult séma szerint zajlik - a Merge Agent (Összefűző ügynök) szolgáltatás feladata. Ennél a replikáció típusnál nem annyira a biztonsági másolat készítés a lényeg, hanem inkább a rendelkezésre állás. Az egyik kiszolgáló kiesése esetén a másik változtatás nélkül, azonnal képes átvenni a helyét. Ez ugyan részben igaz az előző esetekben is, de például a Snapshot típusnál fennálló adatkülönbözőség nem biztos, hogy mindig megfelelő. Másik, hogy a beérkezett kéréseket hol az egyik, hol a másik szerver szolgálhatja ki, ami nagyban növeli a teljesítményt.
A következő részben az SQL kiszolgálók egymásközti kapcsolatának tesztelésével foglalkozunk.

Könyv
Ez a cikk megtalálható ebben a könyvben: Windows Software Offline 2002 évkönyv 329. oldal

Felhasználási feltételek
A Software Online szoftverfejlesztői magazin mindegyik cikke, minden megjelent képe, és egyéb publikált anyaga szerzői jog védelme alatt áll! Bármilyen formában történő másodlagos terjesztésük, közzétételük vagy felhasználásuk kizárólag a kiadó előzetes írásbeli engedélyével történhet!

Copyright © 1999-2012 Animare Software Kft. Minden jog fenntartva!
| Készült: Animare Stúdió | Adatvédelem | Kapcsolat |