MariaDB Server och MariaDB Cluster är produkter med öppen källkod som drivs av MariaDB Corporation. MariaDB Server är en av de mest populära relationsdatabaserna, den var ursprungligen splittrad från MySQL-servern.
MariaDB Cluster är en högtillgänglighetslösning byggd från MariaDB Server, som använder ett Galera Cluster wsrep-bibliotek för att synkronisera data mellan noder. Replikeringsmetoden för Galera är synkron (eller "nästan synkron"), vilket säkerställer att data kommer att vara samma på alla noder.
MariaDB-servern kan också göras mycket tillgänglig via standardreplikering. Replikering kan vara asynkron eller semisynkron.
Så hur skiljer sig MariaDB-servern med standardreplikering från MariaDB-kluster med Galera-kluster? I den här bloggen kommer vi att jämföra dessa två. Vi kommer att använda ClusterControl för att illustrera några av skillnaderna.
MariaDB Server Architecture
Arkitekturen för MariaDB Server kan vara en singel/fristående instans eller master/slav replikering som visas i diagrammet nedan.
MariaDB Servers eninstansarkitektur står endast för en nod. Nackdelen med att ha en enda instans är en enda felpunkt för databasen. Om din databas kraschar och inte kommer upp igen, har du ingen failover-mekanism, och du måste göra en återställning för att återställa din databas från den senaste säkerhetskopian.
Master/slav-arkitekturen är en distribuerad uppsättning, där mastern fungerar som skribent och slaven/slavarna som läsare. Med en lastbalanserare som Maxscale eller ProxySQL kan du dela upp databastrafiken så att skrivningar skickas till mastern och läser till slaven/slavarna. Att ha en replikeringsinställning kommer att eliminera en enda felpunkt för databasen, men du måste kunna göra failover automatiskt om mastern misslyckas. Annars kommer applikationer inte att kunna skriva till databasen och de kommer att påverkas. ClusterControl kan konfigureras för att tillhandahålla automatisk failover och återställning för MariaDB-replikering.
MariaDB Cluster Architecture
MariaDB Cluster är en högtillgänglighetslösning som består av MariaDB Server och Galera Replication som visas i arkitekturdiagrammet nedan:
Det är synkron ("praktiskt taget synkron") replikering, alla noder är skrivbara. Den synkrona replikeringen garanterar att om ändringarna sker i en av galeranoderna, kommer den att vara tillgänglig på alla andra noder i klustret innan de committeras.
Den stora skillnaden är att alla noder är lika ur applikationssynpunkt, de kan skicka skrivtrafik till vilken som helst av databasinstanserna. Alla noder bör också ha exakt samma data så att det inte finns någon dataförlust i händelse av nodfel.
MariaDB-distribution
Både MariaDB Replication och MariaDB Cluster kan distribueras via ClusterControl. När du distribuerar MariaDB Server måste du börja med att välja MySQL Replication medan du för MariaDB Cluster måste välja MySQL Galera.
För MariaDB Server kan du antingen distribuera en enda nod MariaDB-instans eller så kan du ställa in master/slave och dubbelriktad replikering. Det minsta antalet noder i en replikeringssetup är två, du behöver en master och minst en slav. Fyll bara i IP-adressen för mastern och lägg till slavar (om du vill ha master/slave-arkitektur). Du kan använda fältet Add Second Master om du vill ställa in dubbelriktad replikering. En master-master-inställning kommer att tillhandahållas med dubbelriktad replikering, men en av noderna kommer att ställas in som skrivskyddad. Anledningen är att minimera risken för dataavdrift och "felaktiga transaktioner".
För MariaDB Cluster behöver du minst tre värdar för måldatabasnoder för att installeras. Detta beror på att den måste kunna hantera nätverkspartitionering eller "split brain"-syndrom. Du behöver bara fylla i ip-adressen när du lägger till nod när du definierar MySQL-servrarnas konfiguration.
Glöm inte att välja MariaDB som leverantör av databas, databasversion som du vill installera och fylla i root-lösenordet. Du kan också ändra den icke-standardiserade datadirigenten till vilken annan sökväg som helst.
När vi har konfigurerat alla saker är det bara att distribuera klustret. Det kommer att utlösa ett nytt jobb för databasdistribution.
Observera att det också är möjligt att ha 2 Galera-noder och en Galera-arbitrator aka garbd på en tredje värd.
MariaDB Server &Cluster Monitoring
Databasövervakning är en kritisk del av databasen, du kan känna till det aktuella tillståndet för databasens hälsa. Skillnaden mellan MariaDB Server och MariaDB Cluster övervakning är Galera Metrics för synkronisering.
På MariaDB Server kan du kontrollera din aktuella databastillstånd genom MySQL Metrics; MySQL Server - Allmänt, MySQL Server - Cachar, MySQL InnoDB Metrics som också är synligt på MariaDB Cluster som visas nedan:
MySQL-server - Allmänt ger dig information om det aktuella tillståndet för InnoDB buffertpoolens träffförhållande, databasanslutning, frågor, låsning och databasminnesanvändning.
MySQL-server - Cacher, det finns mycket information i cacher. Mest relaterat till cachen i databasen, t.ex.:buffertpoolens storlek, buffertpoolsinstansen. Det finns också information om tabellcacheanvändning, träffförhållande, cacheträffar och missar. Du kan också hitta trådcacheanvändning och information om träffförhållande .
MySQL-server - InnoDB Metrics visar mätvärden relaterade till InnoDB-lagring, t.ex.:Bufferpool-aktivitet, InnoDB-radoperationer, InnoDB-loggfilstorlek, InnoDB Data Read/Write.
På MariaDB Server, om du ställer in master/slave-replikering, finns det en underkategori av mått under MySQL-replikering - Master. Det finns information relaterad till binär masterloggfil, master binär loggposition och frekvens för skapande av binlog.
MariaDB Server har mycket information relaterad till databasen, dessa finns även tillgängliga för MariaDB Cluster. Skillnaden är att det finns två instrumentpaneler för MariaDB Cluster - Galera Overview och Galera Server Charts.
Galeraöversikt ger information om det aktuella tillståndet för Galera-replikeringen. Det finns information som klusterstorlek, flödeskontroll skickad, flödeskontroll mottagen, flödeskontroll pausad.
Galera Server Charts har information om klusternamn, klusterstatus, storlek, global cachestorlek.
Slutsats
MariaDB Server med standardreplikering och MariaDB Cluster är egentligen inte olika produkter vad gäller databastjänst, men de har olika egenskaper beroende på dina krav på tillgänglighet och skalbarhet. ClusterControl stöder både MariaDB Server med standardreplikering och MariaDB Cluster-distributioner, så pröva båda inställningarna och låt oss veta vad du tycker.