Galera replikointi

image of a database cluster using Galera Toolkit

  • Galera replikointi tapahtuu tansaktion commit-hetkellä, jolloin transaktion suorittamat muutokset (muutosjoukko) lähetetään klusterille vahvistamista varten.
  • Sovellus kytkeytyy suoraan DBMS palvelimeen ja näkee klusterin yhtenä, natiivina tietokantapalvelimena
  • wsrep API (write set replication API), määrittelee Galera replikoinnin ja tietokantapalvelimen rajapinnan.

Sykroninen ja asynkroninen replikointi

Synkrononinen replikointi takaa sen. että jos transaktio on hyväksytty yhdessä klusterin palvelimessa, se on myös vahvistettu kaikissa muista klusterin palvelimissa. Tämä on keskeinen ero synkronisen ja asynkronisen replikoinnin välillä, asynkroninen replikointi ei anna mitään takeita viiveistä"master" ja "slave" palvelinten välillä. Viive voi riippua monista asioista ja voi olla paikoin lyhyempi tai pidempi. Tästä seuraa myös se, että asynkronisen replikointijärjestelmän master-palvelimen vian jälkeen, osa transaktioista voi "kadota". Image of Galera library
Synkronisella replikoinnilla on teoreettisesti useita etuja asynkroniseen replikointiin nähden:

  • korkea käytettävyys (palvelimen rikkoutuminen ei koskaan johda transaktioiden häviämiseen).
  • transaktiot voidaan suorittaa samanaikaisesti eri klusterin palvelimissa.
  • kausaalisuus voidaan toteuttaa (SELECT kysely transaktion T jälkeen, näkee aina transaktion T muutokset riippumatta siitä missä palvelimessa SELECT suoritetaan).

Synkroninen replikointi on käytännössä usein toteututtu 2-phase commit tai hajautetun lukituksen avulla ja replikoinnin suorituskyky on ollut hyvin rajoitettu. Huono suorituskyky ja toteutusten kompleksisuus ovat johtaneet tilanteeseen, jossa asynkroninen replikointi on edelleen hallitseva tietokantojen replikointimenetelmä.

Hallitsevat open-source tietokannat, kuten MySQL ja PostgreSQL tarjoavat vain asynkronisen vaihtoehdon replikointiin.

Sertifiointiin perustuva replikointimenetelmä

Useat tietokantateknologian tutkimukset ovat raportoineet yhäkehittyneemmistä synkronisista replikointimenetelmistä
(esim. Database State Machine Approach and Don't Be Lazy, Be Consistent) ja näiden prototyyppi-toteutukset ovat nostaneet paljon odotuksia. Me yhdistimme kokemuksemme tietokantateknologioista ja replikointimenetelmistä ja loimme Galera replikointijärjestelmän, joka toteuttaa tehokkaasti uusimmat saavutukset synkronisen replikointitutkimusten alalla.

Galera replikointi on korkeasti käytettävä ja skaalautuva synkroninen replikointijärjestelmä, joka takaa korkean käytettävyyden ja suorituskyvyn. Galera-klusteroinnin ominaisuuksia ovat:

  • korkea käytettävyys
  • läpinäkyvyys
  • skaalautuvuus (lähes lineaarinen suorituskyvyn kohentuminen)

Geneerinen replikointi kirjasto

Galera replikointi on toteututtu jaettuna kirjastona, joka voidaan linkittää minkä tahansa sellaisen transaktionaalisen sovelluksen kanssa, joka toteuttaa wsrep API rajapinnan.
Image of Galera library

Galera replikointikirjasto tarjoaa toiminnallisuudet transaktioiden muutosjoukkojen tuottamiseen, välittämiseen ja voimaansaattamiseen. Galera kirjaston kerrokset ovat:

  • wsrep API määrittää rajapinnan - vaatimukset tietokannalle ja replikointitoteutukselle
  • wsrep hooks on wsrep toteutus DBMS moottorissa.
  • Galera provider toteuttaa wsrep API vaatimukset Galera kirjastossa
  • certification kerros muodostaa transkaktioiden muutosjoukot ja suorittaa niiden sertifioinnin.
  • replication hallitsee replikointiprotokollaa ja takaa "total order" toteutuksen
  • GCS framework toteuttaa plugin toteutuksen GCS toteutuksille
  • useita GCS järjestelmiä voidan kytkeä Galera replikointiin. Olemme testanneet spread järjestelmällä ja kahdella omalla GCS toteutuksella: vsbes ja gemini

Galera-toteutukset

Codership kehittää MySQL and PostgreSQL klusterointeja.