Galera replikointi

- 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". 
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.

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.
