A multi-master replication, magyarul több főkiszolgálós replikáció vagy többforrású replikáció az adatbázismásolatok készítésének olyan módszere, ami lehetővé teszi, hogy számítógépek egy adott csoportja úgy tárolja ugyanazt az adathalmazt, hogy bármelyiken történő változtatás esetén, a változtatás a csoport minden másik tagján is megtörténjen. A rendszer feladatai közé tartozik az adatok szinkronizálása a gépek között, illetve az esetlegesen keletkező konfliktusok kezelése (ilyen konfliktus például, amikor két különböző gépen ugyanazt az adatot más-más értékre módosítják).

A több főkiszolgálós replikáció ellentéte a mester-szolga alapú replikáció (master-slave replication). Ez utóbbi esetben a csoport egyik tagja a „mester”, a többi gép pedig ennek a „szolgája”. Ebben a topológiában a változtatások csak a „mester” gépen végezhetőek, és innen másolódnak a „szolgákra”. A mester-szolga viszony sokszor csak az adatok egy részére vonatkozik, tehát előfordulhat, hogy egyazon gép bizonyos adatok esetében a „mester”, más adatok esetében a „szolga” szerepkörét látja el. A mester-szolga alapú rendszerekben jóval egyszerűbb fenntartani az adatok konzisztenciáját, de kevésbé rugalmasak, mint a több főkiszolgálós rendszerek.

Előnyök szerkesztés

  • Ha az egyik főkiszolgáló (mester) kiesik, attól még a többi képes az adatok manipulálására.
  • A mesterek fizikailag bárhol elhelyezkedhetnek a világon, amíg hálózaton keresztül képesek az egymással való kommunikációra.

Hátrányok szerkesztés

  • A legtöbb megvalósítás csak lazán konzisztens, például lusta vagy aszinkron elven működnek, ezzel megsértve a ACID tulajdonságokat.
  • A mohó replikációs rendszerek komplexek, és jelentősen növelik a hálózati adatforgalmat.
  • Az automatikus konfliktusfeloldás jelentősen nehezül a gépek számának emelkedésével, és jelentősen növeli a hálózati kommunikációt.

Módszerek szerkesztés

Napló alapú szerkesztés

Ebben az esetben minden gépen egy-egy naplóban gyűlnek az adatbázis-változások, és ezen napló alapján végzi el a többi gép is a szükséges műveleteket. A napló alapú változáskövetés csak aszinkron módon mehet végbe.

Esemény (trigger) alapú szerkesztés

Ebben az eseményekben különböző eseményekre (adatbázisbeli változásokra) iratkozhatnak föl az egyes gépek. Egy ilyen változtatás esetén a föliratkozó azonnal értesítést kap a változásról. Az esemény alapú változáskövetés mind szinkron, mind aszinkron módon végbemehet.

Megvalósítások szerkesztés

Sok LDAP-alapú fájlszerver implementálja a több főkiszolgálós replikációt.

Active Directory szerkesztés

Az egyik legelterjedtebb implementáció a fájlszerverek között a Microsoft Active Directory. Az Active Directoryban nincs szükség arra, hogy minden tartományvezérlő (ezek az Active Directory-ban a főkiszolgálók) minden másikat replikáljon, ez ugyanis jelentősen növelné a hálózati forgalmat nagy méretű Active Directory-struktúra esetén. Ehelyett komplex frissítési minták gondoskodnak arról, hogy az adatok minden szerveren időszerűek legyenek, és a frissítések ne igényeljenek túlzott hálózat kapacitást. Az Active Directory azonban nem teljesen több főkiszolgáló alapú, bizonyos részei ugyanis rugalmas, egy mesteres művelet (Flexible single master operation) alapúak. (Ez utóbbi műveletek leginkább a mester-szolga elv szerint működnek, azzal a különbséggel, hogy a mester helyét szükség esetén bárki átveheti.)

CA Directory szerkesztés

A CA Directory támogatja a több főkiszolgálós replikációt.

OpenDS szerkesztés

Az OpenDS az 1.0-s verziótól támogatja a több főkiszolgálós replikációt. Az OpenDS megvalósítása egy aszinkron, napló alapú, közzététel-feliratkozás elvű módszer, ami jól skálázható nagy rendszerekre. Az OpenDS nem foglalkozik konfliktusfeloldással a bejegyzések és az attribútumok szintjén. A megoldás jól használható nagy kiterjedésű (WAN) hálózatok esetén.

OpenLDAP szerkesztés

Az OpenLDAP egy igen elterjedt nyílt forráskódú LDAP-megvalósítás, amely a több főkiszolgálós replikációt a 2.4-es verziójától kezdve támogatja.

Oracle szerkesztés

Az Oracle adatbázisklaszter két különböző módszert is használhat a több főkiszolgálós replikáció megvalósítására.

  • Aszinkron esetben egy késleltetett tranzakciós sorba gyűjti a változásokat, amelyeket a klaszter tagjai bizonyos időközönként kiolvasnak és végrehajtanak.
  • Szinkron esetben az Oracle két fázisú véglegesítés (Two-Phase Commit) módszerét használva biztosítja a klaszter gépein tárolt adatok konzisztenciáját.

MySQL szerkesztés

A MySQL a 3.23-as verziótól kezdve támogatja a több főkiszolgálós replikációs sémát. A MySQL Cluster a 6.3-as verziótól kezdve támogatja a konfliktusok detektálását és feloldását több mester között. Ezeken felül létezik egy külső, Galera elnevezésű projekt, amely valódi több főkiszolgálós képességekkel rendelkezik.

PostgreSQL szerkesztés

A PostgreSQL a 9.1-es verziójától kezdve támogatja a több főkiszolgálós replikációt. A PostgreSQL egy olyan szinkron másolást implementál, amely író tranzakciók esetén elküldi a változtatást az összes többi adatbázis blokkhoz a véglegesítés (commit) után. Az elküldés után az aktuális mester addig vár, amíg legalább egy másik gép visszajelzi, hogy bejegyezte a változtatást a tranzakciós naplójába. A megvalósítás ezen felül lehetővé teszi a csak olvasó lekérdezések továbbítását ezen másolt adatbázisok felé, így osztva el a hálózati terhelést.

Ezen kívül a PostgreSQL-hez léteznek egyéb kiegészítő csomagok, amelyek egyéb több főkiszolgálós lehetőségekkel bírnak. Néhány példa:

Ingres szerkesztés

Az Ingres Replicator megvalósításában egy szerver kiesése esetén a kliens átirányítható más szerverekre. A rendszer (az Active Directoryhoz hasonlóan) nem követeli meg, hogy adott környezet minden szervere minden másikat replikáljon, ez ugyanis jelentősen növelné a hálózati forgalmat nagy méretű struktúra esetén. Ehelyett az Ingres Replicator lehetővé teszi, hogy bizonyos szerverek csak bizonyos adatokért, módosításokért feleljenek. Az adatok konzisztenciájáról a két fázisú véglegesítési protokoll segítségével gondoskodik. Az Ingres Replicator különböző relációs adatbázis-kezelő rendszerekkel is képes együttműködni, és összekötni őket.

Fordítás szerkesztés

  • Ez a szócikk részben vagy egészben a Multi-master replication című angol Wikipédia-szócikk fordításán alapul. Az eredeti cikk szerkesztőit annak laptörténete sorolja fel. Ez a jelzés csupán a megfogalmazás eredetét és a szerzői jogokat jelzi, nem szolgál a cikkben szereplő információk forrásmegjelöléseként.