MariaDB Galera cluster solution

Cloud web platform synergy

 

To je “Enterprise Level System” (sustav za poduzeća) za reaktivne aplikacije koji želi imati visoku dostupnost.

Kako bi se to postiglo, mora biti:

  • event-driven (pokretan događajima)

  • scalable (skalabilan)

  • resilient (elastičan, prilagodljiv)

  • responsive (povratno primjenjiv)

Kako bi se postigli ti ciljevi, bilo koja korištena baza podataka mora također biti:

  • resilient (izdržljiva na poremećaje)
  • self-healing (Mora nastaviti raditi, čak i ako je dio privremeno nedostupan zbog održavanja ili neke kritične greške)

Synergy

DB Clustering (grupiranje baze podataka)

Cluster je zbir pojedinačnih node-ova (čvorova). Svaki čvor je baza podataka sama za sebe. Snaga grupiranja se može iskoristiti spajanjem pojedinih čvorova i sinhronim radom. Tako nastaje inteligentno grupiranje u clusteru. Čvorovi međusobno komuniciraju, pomažu jedan drugom, balansiraju svoj posao i rade integrirano.

Balance

MariaDB cluster

MySQL je jedna od najkorištenijih baza podataka (ako ne i najkorištenija.

MariaDB je poboljšani rođak od MySQL. Može raditi samostalno, ali jedino rad u clusteru je čini visoko dostupnom.
U usporedbi s ostalim postojećim bazama podataka, to je:

  • Rješenje visoke dostupnosti sa sinhronom replikacijom, failover-om (mogućnošću automatske promjene na redundanti sustav u slučaju pada glavnog) i resinhronizacijom
  • Nema gubitka podataka
  • Svi poslužitelji imaju najnovije podatke (nema kašnjenja stanja na slugama)
  • Skalabilnost čitanja
  • Poprilično dobra skalabilnost pisanja
  • Visoka dostupnost između centara za podatke

Topologija

Kada je pokrenuta na jednom računalu, osjetljiva je na pad računala.
Spajanjem više od jednog računala u cluster stvara topologiju baze podataka.
U topologiji moraju postajati jasna pravila, kako se ne bi svaki čvor svađao sa svima ostalima.

Tradicionalno se to postizalo korištenjem mastera (glavnog računala), koji koordinira komunikaciju i slave-ova (sluga) koji se pokoravaju. U slučaju pada mastera, cijeli sustav je nekoordiniran. Prva rješenja su imala mehanizam, koji bi potom jednog od preostalih slave-ova proglasio master-om. Može biti samo jedan.
MariaDB galera tehnologija prisupa problemu na drugačiji način. Sastavljena je od donor-a (davatelja) i joiner-a (pridruženih). Prvi čvor koji pokreće cluster je originalni donor. On se pokreće kako bi se kreirao cluster. Svaki pridružujući čvor će postati joiner. Međutim, može istovremeno biti i donor nekom drugom joiner-u. Neki čvorovi služe kao medijatori (posrednici) i cluster se samoorganizira u jedinstvenu radnu jedinicu. Ako neki čvorovi prestanu raditi, svi ostali čvorovi se preorganiziraju. Sve se to događa samostalno u pozadini.

Pisanje u bazu podata i čitanje iz baze se događa na principu “prvo dogovor”. Svi čvorovi se prvo pitaju kada se vrši operaciju upisa podataka i tek kad se svi slože, tek onda se izvršava i rezultat se propagira (proširuje) kroz cluster. Ako se operacija pisanja dogodi na istim podatcima na više od jednog čvora, događa se “livelock” (zaključavanje naživo). Međutim to nije kritično, jer se ponovnim pokušajima pisanja u različita vremena jednom zapiše. Isti podatak se ne može zapisati u isto vrijeme na više od jednog čvora. Konzistencija podataka je osigurana. Operacije čitanja se mogu dogoditi bilo kada na bilo kojem broju čvorova, jer su podatci konzistenti pri pisanju.

Session

Quorum (Kvorum)

Kako bi se odlučilo što će se raditi slijedeće, barem se neparan broj čvorova mora dogovoriti. Preporučljivo je koristiti barem 3 čvora. Broj čvorova koji imaju većinu odlučuje kako će se razriješiti konfliktna situacija. Spojevi u clusteru između nekih čvorova mogu zatajiti. To je poznato kao situacija “split brain” ili “brain split” (sindrom odvojenog mozga). Svaka particija bi nastavila posao po svome, što je najmanje željeno ponašanje. Zbog toga samo većina nastavlja rad, dok manjina ide u modus spavanja (čekanje). Nakon ponovnog spajanja na većinu, cluster nastavlja raditi u jedinstvu. To je “self-healing” (samoliječenje) i  “resiliency” (elastičnost).

quorum

Trenutni status unutar Open Source Osijek zajednice

MariaDB galera baza podatak cilja kao glavni backend (pozadinska logika za bazu podataka) za Synergy Platformu. Kako izvršava pozadinski posao čuvanja podataka i čini to vrlo dobro, odabir umjesto nekih drugih alternativa nije bio težak. Testovi pokazuju malo korištenje resursa i kako je “multimaster functionality” (pisanje je moguće na svaki čvor, automatski se sinhronizira stanje) bolje rješenje od korištenja tradicionalnog modela master-slave.

Kako bi se imao najmanji pouzdan sustav sa kvorumom, Open Source Osijek odabire MariaDB Galera cluster sa 3 čvora.
U budućnosti je moguće proširenje, ovisno o potrebama.

MariaDB

 

Reference (engleski)

https://mariadb.org/

https://mariadb.com/kb/en/galera/

https://mariadb.com/kb/en/what-is-mariadb-galera-cluster/

http://en.wikipedia.org/wiki/High_availability

http://en.wikipedia.org/wiki/Redundancy_%28databases%29

http://haproxy.1wt.eu/

http://www.keepalived.org/

http://en.wikipedia.org/wiki/Replication_%28computing%29

http://www.percona.com/live/mysql-conference-2013/sessions/how-understand-galera-replication-0