Skapa multimaster databaskluster med Galera

I takt med att mängden data växer i databasen, växer också kraven vad gäller prestanda, åtkomst och inte minst möjligheten att snabbt återställa databaserna när det gått helt på tok. Det riktigt stora databassystemet krävde förut installationer som MySQL Cluster, i mindre MySql system sk master-master replikering. Idag finns ett alternativ till; Galera.

Galera är ett sk multi-master databaskluster där man, till skillnad mot tex MySql Cluster men i likhet med master-master replikering, använder ett antal server noder som alla är likvärdiga. Dvs alla noder i klustret agerar både som master och slave till varandra.

I master-master replikering är båda noderna master och slave till varandra via de inbyggda replikeringsfunktionerna, ett upplägg med en hel del fallgropar. I Galera sköts däremot hela replikeringen av en fristående wsrep tjänst.

Också Galera har sina begränsningar och krav:

  • klustert som helhet är lika snabbt som sin mest långsamma nod
  • alla noder bör vara likvärdiga prestandamässigt
  • alla noder bör vara anslutna till ett LAN med god bandbredd
  • ändringar i scheman kräver speciella åtgärder
  • antalet noder måste vara udda
  • klientprogrammen måste stöda databas lastbalansering och failover

… för att nämna några av de viktigaste.

På pluskontot finns däremot:

  • lätt att skala ut
  • minimerar behover av backuper
  • mycket tillförlitligt
  • nod grupper kan utlokaliseras i olika datacenters över WAN
  • minimal fördröjning (latency) i replikeringen
  • skalbar parallell synkron replikering
  • automatisk hantering av noderna
  • nodgrupp kan agera som traditionell master eller slave till andra MySql databaser
  • Open-Source (gratis är alltid gott)
  • finns för både Percona och MariaDB

När alla noder är både masters och slaves krävs någon form av lastbalansering och failover för att distribuera ut lasten på ett jämnt och säkert sätt.

En välbeprövad produkt är HAproxy. Mest känd som en kompetent Open-Source lastbalanserare för webbplatser men fungerar alldeles utmärkt även för Galera.

Man kan, och bör i kritiska applikationer, installera också en backupserver till lastbalanseraren ifall denna går ned. Två servers med HAproxy och tex Heartbeat löser det problemet.

galera

Något att notera är kravet på udda antal databas noder, vilket i den sk split-brain (nätverkspartitionering) problematiken. Om 50% av noderna tappar kontakten, vilken grupp har då rätt data (är ”master”) och vilken ska återansluta (vara ”slave”) i återföreningen?

Genom att ha udda antal noder, minst 3 stycken, minimerar man problemet då det aldrig kan uppstå en 50% split.

Detta innebär dock inte att man alltid behöver minst 3 noder. I en mindre installation kan man också klara sig med endast 2 noder om man utökar med en sk arbitrator, garbd, som är en tjänst som agerar nod i klustret utan att hantera data eller SQL frågor.

Galera är som synes ett mycket intressant alternativ, inte minst kostnadsmässigt, när det blir dags att skala ut den gamla trånga databasen på ny hårdvara.

Som alltid krävs en (hel) del kunskap och erfarenhet när man jobbar med databassystem och det är viktigt att börja projektet i en testmiljö och att skapa en väl genomtänkt plan för emigrationen.

 

Annonser
Tagged with: , , ,
Publicerat i Databaser, Lastbalansering
Erik Schütten

Hej! Jag heter och är bosatt på Åland, bekvämt mittemellan Sverige och Finland.

Jag har jobbat med IT i drygt 30 år och är bla delägare i ett internationellt mjukvaruföretag där jag ansvarar för den tekniska driften och -utvecklingen (Vice President of Technology).

Behöver du kvalificerad hjälp med din IT verksamhet? Fråga Erik! Du når mig via erik@scab.ax. Mer info om mina tjäntser hittar du på www.scab.ax.

Linkedin Twitter Facebook Google+ RSS

Ange din e-postadress för att följa denna blogg och få meddelanden om nya inlägg via e-post.

QR-code
About Erik Schütten
Senior IT expert with 30 years of experience in designing, implementing and managing IT systems and staff. Follow Erik Schütten on Google+, Twitter and Facebook