MySQL High Availability is een optie die u kunt selecteren waarmee uw MySQL-database beschikbaar blijft in geval van een storing of onderbreking. Met deze functie kunt u hogere uptime-eisen en tolerantie voor dataverlies instellen. In dit artikel bekijken we wat het algemene concept van hoge beschikbaarheid inhoudt, en hoe de optie Hoge beschikbaarheid voor MySQL werkt.
Wat is hoge beschikbaarheid?
Hoge beschikbaarheid is het vermogen van een systeem of dienst om te blijven functioneren en beschikbaar te blijven wanneer zich een storing of uitval voordoet. Een systeem met hoge beschikbaarheid zorgt ervoor dat de bedrijfskritische systemen en toepassingen van een organisatie altijd operationeel zijn. Het is vooral belangrijk voor organisaties in sectoren als gezondheidszorg, financiën en luchtvaart, waar het uitvallen van een bedrijfskritisch systeem ernstige gevolgen kan hebben.
Hoge beschikbaarheid wordt meestal uitgedrukt als een percentage van de uptime, gedefinieerd door service level agreements (SLA's), waarbij een score van 100 staat voor een systeem dat nooit faalt. Omdat dit vrijwel onhaalbaar is, streven de meeste organisaties naar "vijf negens" of 99,999% beschikbaarheid.
Hoe MySQL hoge beschikbaarheid bereikt
Een systeem met hoge beschikbaarheid moet onmiddellijk kunnen herstellen als zich een fout voordoet. Een architectuur met hoge beschikbaarheid vereist ten minste drie basiselementen die samenwerken om herstelbaarheid en hoge beschikbaarheid te garanderen:
Foutdetectie
MySQL heeft een High Availability-optie waarmee applicaties kunnen voldoen aan eisen voor een hogere uptime (en geen tolerantie voor dataverlies). Als de optie High Availability is ingeschakeld, creëert het MySQL-systeem drie instances in verschillende foutdomeinen of beschikbaarheidszones.
Data worden gerepliceerd tussen de drie instances met behulp van MySQL Group Replication, en de applicatie maakt verbinding met de primaire instance voor het lezen en schrijven van data van en naar de database. Bij een storing schakelt het systeem binnen enkele minuten automatisch over op een secundaire instance.
Failover
Het failover-mechanisme zet diensten over naar een gerepliceerde instance. Als er meer dan één back-up-instance beschikbaar is, kiest het failover-mechanisme de beste om naar de primaire node te verplaatsen.
Een omleidingsmechanisme
Zodra failover naar een secundaire instance plaatsvindt, leidt de High Availability-functie alle applicatie- en gebruikersverbindingen om naar wat nu de nieuwe primaire node is. Ook worden alle zoekopdrachten van de oude primaire node omgeleid naar de nieuwe primaire database.
MySQL High Availability: Uptime
Uptime is de tijd dat een systeem beschikbaar is en correct functioneert en wordt uitgedrukt als een percentage van de totale tijd dat het systeem naar verwachting operationeel is. Een hoge uptime betekent dat het systeem meestal beschikbaar is en functioneert zoals verwacht.
De uptime die u kunt verwachten met verschillende niveaus van MySQL High Availability hangt af van de specifieke oplossing voor hoge beschikbaarheid (HA) die u implementeert.
MySQL Replication
Met MySQL Replication kunt u meerdere servers inrichten om redundantie en failover te bieden, zodat een hogere uptime wordt ondersteund dan met een MySQL-server zonder HA-mogelijkheid. Een master-slaveconfiguratie gebruikt een enkele masterserver die leest en schrijft en een of meer alleen-lezen slaveservers. Data van de masterserver worden asynchroon gerepliceerd naar de slaveservers.
Om failover te implementeren, moet u een of meer slaveservers instellen als stand-byservers die kunnen worden gepromoveerd tot master in geval van een storing. Failover is over het algemeen een handmatig proces waarbij u de slave node moet promoveren tot master node door de status van de gepromoveerde slave te veranderen in lees-schrijfmodus zodat deze verzoeken kan accepteren.
Omdat de failover handmatig wordt uitgevoerd, duurt het langer en kan er een menselijke fout plaatsvinden, waardoor de storing langer duurt. MySQL Replication gebruikt ook asynchrone replicatie, wat betekent dat als de master faalt, transacties die op de master zijn vastgelegd mogelijk nog niet zijn gerepliceerd naar de slaveservers. Als er bedrijfskritische data verloren gaan, moeten de data worden hersteld, waardoor het systeem langer buiten gebruik is.
MySQL Group Replication
Met MySQL Group Replication kunt u hogere uptimes bereiken dan met MySQL Replication. Met MySQL Group Replication zet u meerdere MySQL-servers in een groep, waarbij één server wordt aangewezen als de primaire server en de andere servers als secundaire servers. Elke server in de groep onderhoudt een kopie van de data en gebruikt replicatie om ervoor te zorgen dat de kopieën synchroon blijven.
Als de primaire server uitvalt, detecteren de secundaire servers in de groep de storing automatisch en begint het failoverproces. Een van de secundaire servers wordt automatisch gepromoveerd tot de nieuwe primaire server en begint verzoeken van cliënten te behandelen. De andere secundaire leden in de groep ontvangen nu updates van de nieuwe primaire server en gaan door met het verwerken van client-leesverzoeken.
Als de uitgevallen server weer online komt, voegt hij zich automatisch weer bij de groep als secundaire server.
Omdat foutdetectie en failover automatisch plaatsvinden met MySQL Group Replication, is de downtime minimaal en weten gebruikers en applicaties meestal niet dat er een storing is opgetreden.
MySQL Cluster
Een MySQL Cluster HA-oplossing biedt het hoogste niveau van uptime. Dit uiterst beschikbare, gedistribueerde databasesysteem, samen met automatische failover en load balancing, biedt hoge mate van beschikbaarheid, prestaties en schaalbaarheid en is ontworpen om vrijwel geen downtime te hebben.
MySQL Cluster gebruikt drie soorten nodes die samenwerken om data op te slaan en te beheren:
- Data nodes: Slaan data op en behandelen lees- en schrijfverzoeken.
- MySQL server nodes: Ontvangen verzoeken van de cliënttoepassingen, verwerken deze op de data nodes, en sturen het resultaat terug naar de cliënten.
- Management nodes: Beheren de werking van het cluster en zorgen voor failover en herstel bij een storing.
Als een of meer nodes in een cluster uitvallen, detecteert het cluster het probleem automatisch en start het failoverproces. Het hele proces gebeurt doorgaans binnen één seconde na een storing, zonder dat de service aan cliënttoepassingen wordt onderbroken. Het cluster blijft normaal functioneren, met vrijwel geen downtime.